2010-02-03 9 views
0

Я пытаюсь использовать Imagick через php для создания 8-битного BMP из jpg. Но я хотел бы, чтобы пиксельные цвета начинались с индекса 16, а не из 0. В приведенном ниже коде показано, как создать BMP в нужном формате, который мне нужен, но индекс палитры по умолчанию равен 0. Есть ли способ убедиться, что начало палитры по другому индексу?Как использовать Imagick php для создания файла BMP с смещением палитры

 
$average = new Imagick("icon.jpg"); 
$average->setCompression(Imagick::COMPRESSION_NO); 
$average->quantizeImage(32, Imagick::COLORSPACE_RGB, 0, false, false); 
imagecolorset ($average, 0, 255, 255, 255); 
$average->setImageFormat("bmp"); 

header("Content-Type: image/bmp"); 
echo $average; 

$average->clear(); 
$average->destroy(); 

ответ

0

Я не думаю, что Imagick имеет ничего встроенного в этом дело, так что вам придется создать новую палитру (копировать цвета из старого со смещением), а затем использовать $pixel = $average::getImagePixelColor(), а затем сделать $pixel->getColor() и $pixel->setColor() согласно новой палитре.

+0

Я только что нашел то, о чем я не знал; класс ImagickPixelIterator. что может быть полезно при переходе через все пиксели, нашел этот блог об этом http://valokuva.org/?p=79 –

+0

Спасибо, что указал мне правильные направления. Я надеялся, что будет более эффективный процесс. Интенсивность заключалась в том, чтобы превратить полученный BMP в pixmap, но кажется менее интенсивным изменить индекс pixmap, чем bmp, поэтому я думаю, что поеду с этим методом. В очередной раз благодарим за помощь. – rikonholiday