保存裁剪图像时在屏幕上显示垃圾

时间:2017-05-10 22:14:03

标签: php gd

我的代码正在工作并保存裁剪的图像,但是,我需要它才能显示回声中的内容。

现在它只显示屏幕上的图像,如果我保留标题行并且它没有显示回声中的内容。

如果我删除标题行,它会在屏幕上显示很多垃圾,然后显示回声。

我怎样才能显示垃圾或只显示图像并制作显示回声中的内容?

这是我的代码......

$src = 'images/'.$imagename;

$w=250;
$h=300;    
$x=$_POST['x'];    
$y=$_POST['y'];  
$png_quality = 0;

// if I remove this header I get junk and nothing from the echo below
header('Content-type: image/png');  

$image = imagecreatefrompng($src);
if (!$src)
exit("not a valid image");
$crop = imagecreatetruecolor($w,$h);
$new = imagecopy ($crop, $image, 0, 0, $x, $y, $w, $h);
imagepng($crop);

imagepng($crop,$src,$png_quality))

echo<<<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Image </title>
</head>

<body>
Here is your image:<br /><br />
<img src="images/$imagename">
</body>
</html>
END;

1 个答案:

答案 0 :(得分:1)

稍微清理了一下你的代码。看起来您要保存裁剪的png并将其输出到imagepng($crop);的浏览器。为什么?

  

imagepng - 将PNG图像输出到浏览器或文件

查看整个内容我假设您要裁剪并更新磁盘上的文件,然后将其用作src属性的img来呈现该更新的文件。

如果您尝试直接输出图像,那么标题是有意义的。

<?php
  $src = 'images/' . $imagename;

  $w = 250;
  $h = 300;    
  $x = $_POST['x'];    
  $y = $_POST['y'];  
  $png_quality = 0;

  // if I remove this header I get junk and nothing from the echo below
  //header('Content-type: image/png');  

  $image = imagecreatefrompng($src);

  if (!is_resource($image)) exit("not a valid image");

  $crop = imagecreatetruecolor($w, $h);
  $new = imagecopy($crop, $image, 0, 0, $x, $y, $w, $h);
  //imagepng($crop); Is this desired?
  imagepng($crop, $src, $png_quality);  
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title> New Image </title>
</head>    
<body>
  Here is your image:<br /><br />
  <img src="images/<?=$imagename?>">
</body>
</html>

最后,假设代码共享是准确的,你应该得到一个错误。确保您有错误报告并正在检查日志。我猜你把图像渲染到了浏览器(标题可能会有帮助),然后在点击HTML之前就出现了脚本错误。