想象显示脚本网址而不是图像

时间:2010-04-07 11:02:35

标签: php imagemagick imagick

目前我正在尝试使用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所以我知道我安装了它,事情是当我尝试生成图像并保存它,它完美无缺,但当我尝试直接输出图像时,我得到脚本网址为图像

  $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,那么创建服务器上的文件没有任何问题。有没有人有任何想法我做错了什么?

2 个答案:

答案 0 :(得分:1)

浏览器(通常,Firefox会这样做)显示URL而不是图像内容通常是由无效图像引起的 - 即发送HTTP标题时向浏览器说明内容应该被解释为图像,但内容不能被解释为图像。

如果您的代码在将图像写入文件时正确构建图像,则可能是由于发送不属于图像的输出而导致问题。

确保除了图像之外没有任何其他输出 - 甚至在PHP标记之前或之后都没有空格。

答案 1 :(得分:0)

找到解决方案...而不是echo $canvas;使用echo $canvas->getImageBlob();完美地运作