将内容类型图像/ TIFF发送到浏览器不起作用

时间:2015-09-06 22:08:34

标签: php imagick

我正在使用Imagick(6.7.7-4和模块版本3.2.0RC)。

我正在尝试创建一个图像并在浏览器中动态呈现它,例如,通过HTML

<img src='image_generator.php?QUERY_PARAMS_TO_DETERMINE_TEXT'>

这是image_generator.php内容:

/* Create text */
$draw->setFillColor('white');
$draw->setFontSize( 19 );
$draw->setGravity(Imagick::GRAVITY_CENTER);
$draw->annotation(0, -50, 'points');
$image->drawImage($draw);

/* Give image a format */
$image->setImageFormat('tiff'); // png works

/* Output the image with headers */
header('Content-type: image/tiff'); // png works
echo $image;

当我在php中打开image_generator.php并且图像格式设置为TIFF时,它会自动下载PHP文件,并且不会显示PNG情况下的图像。

1 个答案:

答案 0 :(得分:0)

如果将下载文件的扩展名更改为“ .tif”会得到正确的图像,则问题是浏览器正在使用页面名称作为文件名。当服务器端脚本或小程序以编程方式提供图像(或其他要下载的文件)时,这种情况并不少见。

使用以下标头更改“附件”名称。

/* Give image a format */
$image->setImageFormat('tiff'); // png works

/* Output the image with headers */
// This line will change the download name

header('Content-Disposition: attachment; filename="[NAME.TIFF]");
// This line will set the Mime Type
header('Content-type: image/tiff'); 
echo $image;

就是这样。

我知道我参加这个聚会已经晚了几年,但是,由于各种各样的人都遇到了这个问题,并认为这是错误的代码或配置,或者只是需要知道如何重命名他们的下载,我想我会为此答疑遇到它的其他人。

相关问题