php imagick调整图像代码不能正常工作

时间:2015-07-18 19:32:04

标签: php imagick

我正在使用以下Imagick功能来调整图像大小。代码运行并调整图像大小,但服务器出错时说“从测试服务器请求文档时发生错误”。我无法发现问题。但是,在浏览器中,它输出非人类可读的字符。如果我尝试将调整大小/修改后的图像输出到浏览器,则没有问题。当我尝试将图像保存到磁盘时,我遇到了这个问题。

这是我的代码:

<?php

imagick_resize('running.jpg');

function imagick_resize($image, $width = 460, $height = 300)
{

// define widescreen dimensions
// $width = 460;
// $height = 300;

// load an image
$i = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/alchemyapi/' . $image);
// get the current image dimensions
$geo = $i->getImageGeometry();

// crop the image
if(($geo['width']/$width) < ($geo['height']/$height))
{
    $i->cropImage($geo['width'], floor($height*$geo['width']/$width), 0, (($geo['height']-($height*$geo['width']/$width))/2));
}
else
{
    $i->cropImage(ceil($width*$geo['height']/$height), $geo['height'], (($geo['width']-($width*$geo['height']/$height))/2), 0);
}
// thumbnail the image
$i->ThumbnailImage($width,$height,true);
// save or show or whatever the image
# $i->setImageFormat('png');
# header("Content-Type: image/png");
# unlink('small_square_img.png');
$i->writeImage($_SERVER['DOCUMENT_ROOT'] . '/alchemyapi/tmp/small_square_img.png'); 
# file_put_contents('small_square_img.png', $i);
exit($i);
}
?> 

1 个答案:

答案 0 :(得分:0)

您发送到浏览器的数据不是有效图像。你很可能在之前的某些文件中有一个Byte-Order-Marker

你应该检查它并在发生时进行修复,或提供一个非人类可读字符的例子&#34;让人们了解问题所在。