任何人都可以告诉我为什么以下代码不起作用?它以ZERO字节输出图像 - 但这里是踢球者:当我将“png”改为“jpg”或“jpeg”时,下面的代码正常工作(输出具有正常字节数的图像)。 png代码的src文件是bigpic.png,其中包含一个带有透明背景的简单蝴蝶图标。我有一个创建透明度的include,但是这不会导致0字节的问题,因为当我省略那个特定的包含时,脚本会输出0字节的图像。)
感谢任何想法。
<?php
$x=$_REQUEST['x'];
$y=$_REQUEST['y'];
$x_change=$_REQUEST['x_change'];
$y_change=$_REQUEST['y_change'];
$numberofpics=$_REQUEST['numberofpics'];
$filename=$_REQUEST['filename'];
$c=0;
//SRC FILE IS A 1040x1040 PICTURE OF A BUTTERFLY ICON WITH TRANSPARENT BACKGROUND
while ($c<$numberofpics) {
$src=$_REQUEST['src'];
$src = imagecreatefrompng($src);
$src_width=imagesx($src);
$src_height=imagesy($src);
$dest = imagecreatetruecolor(640, 360);
$c=$c+1;
imagecopy($dest, $src, 0, 0, $x, $y, 640, 360);
header('Content-Type: image/png');
$thisfilename=$filename.$c.".png";
imagepng($dest,$thisfilename,100);
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
$x=$x+$x_change;
$y=$y+$y_change;
}
?>
答案 0 :(得分:0)
您的问题出现在imagepng
的第三个参数(质量)中,它允许您将压缩级别从0(无压缩)设置为9.
您可以尝试评论header
行以查看错误。
因为我在代码中发现了一些错误,所以我修改了一下:
<?php
$x = $_REQUEST['x'];
$y = $_REQUEST['y'];
$x_change = $_REQUEST['x_change'];
$y_change = $_REQUEST['y_change'];
$numberofpics = $_REQUEST['numberofpics'];
$filename = $_REQUEST['filename'];
$src = $_REQUEST['src'];
$src = imagecreatefrompng($src);
for ($c = 0; $c < $numberofpics; ++$c) {
$dest = imagecreatetruecolor(640, 360);
imagecopy($dest, $src, 0, 0, $x, $y, 640, 360);
header('Content-Type: image/png');
imagepng($dest, $filename . $c . '.png', 9);
imagedestroy($dest);
$x += $x_change;
$y += $y_change;
}
imagedestroy($src);
答案 1 :(得分:0)
您需要保持透明度。在imagecreatetruecolor
函数创建$ dest图像后添加这些行:
imagealphablending($dest, false);
imagesavealpha($dest, true);