Thursday, March 22, 2007

ImageMagick Hell

През последните два-три дни основната мъка в живота ми се оказа Image Magick библиотеката за PHP. Защо?

Айде отначало...

В момента основната ми работа е съсредоточена в имплементирането на PHP библиотека, която се явява wrapper на няколко вече вградени графични библиотеки. Стигнал съм до етапа, в който трябва да напиша wrapper-а за Image Magick. Wrapper-а за GD2 се оказа лесна работа, по-скоро скучна и рутинна, отколкото сложна. Бях се настроил, че така ще е и с Image Magick, ама както се казва "you've got another thing coming"... Като за начало се оказа, че вградената в моето PHP библиотека не ще да тръгне. По никакъв начин не успях да я подкарам. Инсталирах PHP и Apache, преинсталирах, пробвах различни версии, различни комбинации от версии, пробвах автоматични, ръчни, модифицирани и какви ли не начини да инсталирам всичкия shit. Пробвах вече готовия пакет XAMPP (за него - по-късно). Абе с една дума луд станах, но нещото не искаше и не искаше да тръгне. Междувременни изчетох де що има форум коментар по темата и се оказа, че далеч не съм единствения, който страда от този проблем. Абсолютна мъка и безизходица. В един момент нервите ми просто не издържаха - свалих си едно Ubuntu, инсталирах си го като втора OS, отворих Synaptic, накликах Apache 1, Apache 2, PHP 4, PHP 5, Image Magick, php5-mod-imagemagick и т.н., дадох Install, почаках минута и половина, погледнах си phpinfo()-то и там пишеше:
ImageMagick support enabled
Magick Backend ImageMagick
ImageMagick version 6.2.4
PHP imagick version 0.9.11
MaxRGB 65535
Supported image formats 8BIM
Font Family - Name AvantGarde - AvantGarde-Book


Без коментар...

След като минах през единия ад така елегантно ме очакваше нова изненада - Image Magick функциите не са документиране в www.PHP.net. Има само списък входни параметри. И добре, че поне това има, че инае не знам какво щях да правя. В момента съм си свалил два guide-а за C++ варианта на библиотеката и се опитвам от там да си чета някакви указания за работа. Малко е мизерно, но за повечето неща се оправям и без manual - то уж не е rocket science. Само дето като дойде момента да си output-на на екрана PNG и работата се закучи - давам му вярната компресия, самоя Image Magick го идентифицира като "image/x-imagick_type_png", но като го засиля в браузъра (естествено, предхождано от съответните headers) и ми излиза JPEG. WTF?! Мдам... JPEG. Иди го разбери. Пробвах всякакви неща - компресии, imagick_convert(), простотии - нищо не помогна. Нищо не разбирах докато не махнах header-а и не си видях картинката като binary или каквото там се води. Тогава нещата проблеснаха... На екрана ми се изсипа нещо в стила:

junk, junk, junkJFIFjunk, junk, junkCREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default qualityjunk, junk, junk


Oh, my! F!@#$%^&*^&&^%$$##@#*&$*@$@$*)@#$#%!!!!!!!!!

Anyway... В този момент реших, че е време за почивка. :)


Колкото до XAMPP - това се оказа един доста добър *AMP пакет. Инсталира си се и си работи без проблем. Има си phpMyAdmin, phpinfo() и какви ли не още странички. Не те занимава с глупости... Не е като да си го сложиш на production машина, но като за development станция мисля, че е екстра. Дори има опцията да си сменяш версията на PHP с два-три клика. Удобно...

0 comments: