PHP GD裁剪PNG不起作用

时间:2014-06-12 17:34:12

标签: php image png jpeg crop

我正在创建一个使用PHP GD裁剪图像的功能。 该功能完美适用于JPEG图像,但当我尝试使用相同的PNG功能时,我只是得到一个空白页面,当我用chrome检查页面时出现以下错误:

我意识到这是一个javascript错误,但这可能是chrome做的事情?这是我访问IMAGE URL时发生的情况。如果我使用JPEG代码复制它,它可以很好地工作。

编辑:在Firefox中它说"图像[URL]无法显示,因为它包含错误。以下js错误只是一个铬错误,并不是非常相关。

  

未捕获的TypeError:无法读取属性' getAttribute'为null   data_loader.js:2未捕获的TypeError:无法读取属性   ' hasAttribute' null global-shortcut.js:9

工作的JPEG代码如下:

$fileName = $_POST['file'];
$jpeg_quality = 100;
$ratio = $_POST['r'];

$src = '/var/www/admin/public_html/images/'.$fileName;
$image = imagecreatefromjpeg($src);
$target = '/var/www/admin/public_html/images/crop/'.$fileName;

$thumb_width = $_POST['w'] / $ratio;
$thumb_height = $_POST['h'] / $ratio;

$width = imagesx($image);
$height = imagesy($image);

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0,
                   0, 
                   $_POST['x'] / $ratio, $_POST['y'] / $ratio,
                   $width, $height,
                   $width, $height);

imagejpeg($thumb, $target, $jpeg_quality);

破碎的PNG代码如下:

$fileName = $_POST['file'];
$jpeg_quality = 100;
$ratio = $_POST['r'];

$src = '/var/www/admin/public_html/images/'.$fileName;
$image = imagecreatefrompng($src);
$target = '/var/www/admin/public_html/images/crop/'.$fileName;

$thumb_width = $_POST['w'] / $ratio;
$thumb_height = $_POST['h'] / $ratio;

$width = imagesx($image);
$height = imagesy($image);

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0,
                   0, 
                   $_POST['x'] / $ratio, $_POST['y'] / $ratio,
                   $width, $height,
                   $width, $height);

imagepng($thumb, $target, $jpeg_quality);

1 个答案:

答案 0 :(得分:0)

我回答了自己的问题。 imagepng()函数从0到9采用质量参数 imagejpeg()函数将质量参数从0到100