无法保存上传的 PNG 文件

发布于 2025-01-01 03:17:13 字数 912 浏览 0 评论 0原文

我可以上传 JPG 文件,但不能上传 PNG 文件。
PNG 图像未保存,但输出此 ‰PNG À À°£ûïS Jäž ŸØ™Ù<íû;

我的代码是这样的:

  $source_gd_image = imagecreatefrompng( $sourcefile ); // <-- If PNG file
  $target_gd_image = imagecreatetruecolor( $target_image_width, $target_image_height );

  if($source_image_type == IMAGETYPE_PNG) {
    imagealphablending($target_gd_image, true); // Should this be false?
    imagesavealpha($target_gd_image, true); 
    imagepng($target_gd_image); // <-- This is where the gibberish is outputed
  }

  if($source_image_type == IMAGETYPE_JPEG) {
    imagecopyresampled( $target_gd_image, $source_gd_image, 0, 0, 0, 0, $target_image_width, $target_image_height, $source_image_width, $source_image_height );
    imagejpeg( $target_gd_image, $target_file, $quality );
  }

  imagedestroy( $source_gd_image );
  imagedestroy( $target_gd_image );

我做错了什么?

I'm able to upload JPG files, but not PNG files.
The PNG image is not saved, but ouputs this ‰PNG À À°£ûïS JÄž Ÿ¬™Ù<íû;

My code is like this:

  $source_gd_image = imagecreatefrompng( $sourcefile ); // <-- If PNG file
  $target_gd_image = imagecreatetruecolor( $target_image_width, $target_image_height );

  if($source_image_type == IMAGETYPE_PNG) {
    imagealphablending($target_gd_image, true); // Should this be false?
    imagesavealpha($target_gd_image, true); 
    imagepng($target_gd_image); // <-- This is where the gibberish is outputed
  }

  if($source_image_type == IMAGETYPE_JPEG) {
    imagecopyresampled( $target_gd_image, $source_gd_image, 0, 0, 0, 0, $target_image_width, $target_image_height, $source_image_width, $source_image_height );
    imagejpeg( $target_gd_image, $target_file, $quality );
  }

  imagedestroy( $source_gd_image );
  imagedestroy( $target_gd_image );

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灯角 2025-01-08 03:17:13

就像 imagejpeg 一样,您必须指定 文件名作为第二个参数 如果要将其保存到文件中,否则它只会输出到浏览器。

假设 $target_file 是所需的输出文件名,这意味着使用:

imagepng($target_gd_image, $target_file);

Just like with imagejpeg, you have to specify a file name as the second parameter if you want to save it to a file, otherwise it just gets output to the browser.

Assuming $target_file is the desired output file name, that means using:

imagepng($target_gd_image, $target_file);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文