2010-02-03 6 views
0

J'essaie d'utiliser Imagick via php pour générer un fichier bmp 8 bits à partir de jpg. Mais je voudrais que les couleurs de pixel commencent à l'index 16 plutôt qu'à 0. Le code ci-dessous montre comment générer le bmp dans le format correct dont j'ai besoin, mais l'index de la palette est 0. Y at-il un moyen de s'assurer à un autre indice?Comment utiliser Imagick php pour générer un fichier bmp avec un décalage de palette

 
$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(); 

Répondre

0

Je ne pense pas que Imagick n'a rien construit pour elle, donc vous devez créer une nouvelle palette (couleurs de la copie de l'ancien avec un décalage), puis utiliser $pixel = $average::getImagePixelColor() puis faire $pixel->getColor() et $pixel->setColor() selon la nouvelle palette.

+0

Je viens de trouver quelque chose que je ne connaissais pas; la classe ImagickPixelIterator. cela pourrait être utile pour passer à travers tous les pixles, a trouvé ce blog à ce sujet http://valokuva.org/?p=79 –

+0

Merci de m'indiquer les bonnes directions. J'espérais qu'il y aurait un processus plus efficace. L'intension était de transformer le bmp résultant en un pixmap, mais il semble moins intensif de modifier l'index pixmap que le bmp, donc je pense que je vais aller avec cette méthode. Merci encore pour votre aide. – rikonholiday

Questions connexes