0

現在、imagickを使用して、サーバーに保存せずにいくつかの画像を生成してブラウザに出力しようとしています。私の選択した方法は、php用のimagick拡張機能を備えた画像マジックでした。ドキュメントを読んだところ、パッケージが自分のマシン(Windows XP、XAMPP付き)にインストールされていると確信しています。クラスがインストールされています

imagick module  enabled 
imagick module version  2.0.0-alpha 
imagick classes     Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator 
ImageMagick version     ImageMagick 6.3.3 04/21/07 Q16 http://www.imagemagick.org 
ImageMagick release date    04/21/07 
ImageMagick Number of supported formats:    164 
ImageMagick Supported formats   A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DFONT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, INFO, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MSVG, MTV, MVG, NULL, O, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV

これはphpinfoからのものなので、インストールされていることがわかります。画像を生成して保存しようとすると問題なく動作しますが、画像を直接出力しようとすると、スクリプトのURLが画像として取得されます。

  $draw = new ImagickDraw();

    $draw->setFont('AnkeCalligraph.TTF');
    $draw->setFontSize(52);

    $draw->annotation(110, 110, "Hello World!");
    $draw->annotation(50, 220, "Hello World!");
    $canvas = new Imagick('./pictures/test_live.PNG');
    $canvas->drawImage($draw);
    $canvas->setImageFormat('png');
    header("Content-Type: image/png");
    echo $canvas;

これは使用されるコードです。writeimageを使用すると、サーバー上のファイルは問題なく作成されます。誰かが私が間違っていることについて何か考えを持っていますか?

4

2 に答える 2

1

echo $canvas;解決策を見つけました...使用する代わりにecho $canvas->getImageBlob();完全に機能します

于 2010-04-07T12:42:16.430 に答える
1

画像のコンテンツの代わりに URL を表示するブラウザ(通常、Firefox はそうします)は、無効な画像が原因であることがよくあります。イメージとして解釈できません。

イメージをファイルに書き込むときにコードがイメージを適切に作成している場合、問題はイメージに属さない出力を送信したことが原因である可能性があります。

画像以外の出力がないことを確認してください。PHP タグの前後に空白を含めないでください。

于 2010-04-07T11:08:46.427 に答える