imagecopyresampled对图像采样压缩jpg正常,png采样后变成0字节,系统也无法打开
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了imagecopyresampled对图像采样压缩jpg正常,png采样后变成0字节,系统也无法打开,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5178字,纯文字阅读大概需要8分钟。
内容图文
imagecopyresampled对图像采样压缩jpg正常,png采样后变成0字节,系统也无法打开,代码如下:$width = 200;$height = 200;header("Content-Type: {$data['file_type']}"); /// [file_type] => image/pnglist($width_orig, $height_orig) = getimagesize(".{$data['full_file_path']}"); //图片路径$ratio_orig = $width_orig/$height_orig;if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // 重新取样$image_p = imagecreatetruecolor($width, $height);$image = imagecreatefromjpeg(".{$data['full_file_path']}");$push = "image".$data['image_type'];imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);$push($image_p, $data['min_im'], 100);imagedestroy($image_p); imagedestroy($image);
jpg格式图形采样后正常 ,唯独png 采样压缩有变成这样:
回复讨论(解决方案)
请贴全你的代码
第14行格式png时应该用imagecreatefrompng()
你的程序没做判断?
第14行格式png时应该用imagecreatefrompng()
你的程序没做判断?
不好意思,代码没有上最新的:
//重新对图片采样,平滑插入像素值 function upload_headimg($file='file') { $path = getpath(); if(empty($path)){ return ''; } $config['upload_path'] = $path; $config['allowed_types'] = 'jpg|jpeg|gif|png'; $config['max_size'] = '10240'; $config['file_name'] = 'wj_'.time().mt_rand(1000, 9999); $config['file_ext_tolower'] = TRUE; $CI = &get_instance(); $CI->load->library('upload', $config); $res = $CI->upload->do_upload($file); if($res){ $data = $CI->upload->data(); $path = ltrim($path,'.'); $data['full_file_path'] = $path.'/'.$data['file_name']; $data['min_im'] = '.'.$path.'/min'.$data['file_name']; $width = 200; $height = 200; header("Content-Type: {$data['file_type']}"); list($width_orig, $height_orig) = getimagesize(".{$data['full_file_path']}"); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // 重新取样 $image_p = imagecreatetruecolor($width, $height); $create_im ="imagecreatefrom".$data['image_type']; $image = $create_im(".{$data['full_file_path']}"); $push = "image".$data['image_type']; imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); $push($image_p, $data['min_im'], 100); imagedestroy($image_p); imagedestroy($image); //exit; return $data; }else{ return $CI->upload->display_errors(); } }
请贴全你的代码
//重新对图片采样,平滑插入像素值 function upload_headimg($file='file') { $path = getpath(); if(empty($path)){ return ''; } $config['upload_path'] = $path; $config['allowed_types'] = 'jpg|jpeg|gif|png'; $config['max_size'] = '10240'; $config['file_name'] = 'wj_'.time().mt_rand(1000, 9999); $config['file_ext_tolower'] = TRUE; $CI = &get_instance(); $CI->load->library('upload', $config); $res = $CI->upload->do_upload($file); if($res){ $data = $CI->upload->data(); $path = ltrim($path,'.'); $data['full_file_path'] = $path.'/'.$data['file_name']; $data['min_im'] = '.'.$path.'/min'.$data['file_name']; $width = 200; $height = 200; header("Content-Type: {$data['file_type']}"); list($width_orig, $height_orig) = getimagesize(".{$data['full_file_path']}"); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // 重新取样 $image_p = imagecreatetruecolor($width, $height); $create_im ="imagecreatefrom".$data['image_type']; $image = $create_im(".{$data['full_file_path']}"); $push = "image".$data['image_type']; imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); $push($image_p, $data['min_im'], 100); imagedestroy($image_p); imagedestroy($image); //exit; return $data; }else{ return $CI->upload->display_errors(); } }
找到原因了第40行
$push($image_p, $data['min_im'], 100);
第三个参数 函数为imagepng时范围为0-9
imagejpeg时范围为0-100
Regarding suggestions to rescale the 0-99 quality range of jpeg into the 0-9 range of png, note that for jpeg 99 is minimum compression (maximum quality) while for png 9 is maximum compression (quality doesn't change).
找到原因了第40行
$push($image_p, $data['min_im'], 100);
第三个参数 函数为imagepng时范围为0-9
imagejpeg时范围为0-100
谢谢您,这个问题已经解决了,请问能在保存压缩好的图片后不在浏览器输出吗?我只想直接返回数组,但却总是在浏览器里生成一个20X20的图形并停止运行下去
// 重新取样 $image_p = imagecreatetruecolor($width, $height); $create_im ="imagecreatefrom".$data['image_type']; $image = $create_im(".{$data['full_file_path']}"); $push = "image".$data['image_type']; imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); switch ($data['image_type']) { case 'jpeg': $status = $push($image_p, $data['min_im'], 100); break; case 'png': $status = $push($image_p, $data['min_im'], 9); break; default: $status = $push($image_p, $data['min_im']); break; } imagedestroy($image_p); imagedestroy($image); return $data;
内容总结
以上是互联网集市为您收集整理的imagecopyresampled对图像采样压缩jpg正常,png采样后变成0字节,系统也无法打开全部内容,希望文章能够帮你解决imagecopyresampled对图像采样压缩jpg正常,png采样后变成0字节,系统也无法打开所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。