我正在使用这个类:
- class ImgResizer {
- function ImgResizer($originalFile = '$newName') {
- $this -> originalFile = $originalFile;
- }
- function resize($newWidth,$targetFile) {
- if (empty($newWidth) || empty($targetFile)) {
- return false;
- }
- $src = imagecreatefromjpeg($this -> originalFile);
- list($width,$height) = getimagesize($this -> originalFile);
- $newHeight = ($height / $width) * $newWidth;
- $tmp = imagecreatetruecolor($newWidth,$newHeight);
- imagecopyresampled($tmp,$src,$newWidth,$newHeight,$width,$height);
- if (file_exists($targetFile)) {
- unlink($targetFile);
- }
- imagejpeg($tmp,$targetFile,95);
- }
- }
哪个工作出色,但是用png失败,它创建一个调整大小的黑色图像.
有没有办法调整这个类来支持png图像?
- function resize($newWidth,$originalFile) {
- $info = getimagesize($originalFile);
- $mime = $info['mime'];
- switch ($mime) {
- case 'image/jpeg':
- $image_create_func = 'imagecreatefromjpeg';
- $image_save_func = 'imagejpeg';
- $new_image_ext = 'jpg';
- break;
- case 'image/png':
- $image_create_func = 'imagecreatefrompng';
- $image_save_func = 'imagepng';
- $new_image_ext = 'png';
- break;
- case 'image/gif':
- $image_create_func = 'imagecreatefromgif';
- $image_save_func = 'imagegif';
- $new_image_ext = 'gif';
- break;
- default:
- throw new Exception('Unknown image type.');
- }
- $img = $image_create_func($originalFile);
- list($width,$height) = getimagesize($originalFile);
- $newHeight = ($height / $width) * $newWidth;
- $tmp = imagecreatetruecolor($newWidth,$img,$height);
- if (file_exists($targetFile)) {
- unlink($targetFile);
- }
- $image_save_func($tmp,"$targetFile.$new_image_ext");
- }