发布于2024-11-30 20:10 阅读(747) 评论(0) 点赞(23) 收藏(0)
我正在使用 PHP 处理 .png 文件上传,该文件被裁剪然后上传。无论出于什么原因,我第一次尝试将透明部分换成黑色。在阅读了多个 stack overflow 问题并尝试了解决方案后,我现在处于文件上传但无法读取且为 0 字节的阶段。出了什么问题?(我正在关注其他问题的确切答案……)
.jpeg 可以正常工作,但 .png 则不行
我正在使用的代码:
$dest_image = ImageCreateTrueColor($target_width, $target_height);
switch ($search->found_extension()) {
case 'PNG':
case 'png':
imagealphablending($dest_image, false);
imagesavealpha($dest_image, true);
$source_image = imagecreatefrompng($image);
$transparent = imagecolorallocatealpha($dest_image, 255, 255, 255, 127);
imagefilledrectangle($dest_image, 0, 0, $target_width, $target_height, $transparent);
imagecopyresampled($dest_image, $source_image, 0, 0, $x, $y, $target_width, $target_height, $w, $h);
header('Content-type: image/png');
imagepng($dest_image, "../../" . $folder . "/" . cleanstring($userdata->id) . $hasher . ".png", $quality);
break;
case 'jpg':
case 'jpeg':
case 'JPG':
case 'JPEG':
imagealphablending($dest_image, false);
imagesavealpha($dest_image, true);
$source_image = imagecreatefromjpeg($image);
imagecopyresampled($dest_image, $source_image, 0, 0, $x, $y, $target_width, $target_height, $w, $h);
header('Content-type: image/jpeg');
imagejpeg($dest_image, "../../" . $filename, $quality);
break;
}
尝试过的解决方案:
查看 ajax 请求响应,我发现错误是由于第三个参数的imagepng
和之间的差异引起的。imagejpeg
quality
imagejpeg
范围是 0 - 100(最佳质量)和imagepng
0 - 9(高度压缩)。
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/558241/d7c3a7c92b2c1564a042/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!