Ton*_*bet 19 php png resize image
我正在使用这堂课:
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, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
if (file_exists($targetFile)) {
unlink($targetFile);
}
imagejpeg($tmp, $targetFile, 95);
}
}
Run Code Online (Sandbox Code Playgroud)
哪个效果很好,但它失败了png,它创建了一个调整大小的黑色图像.
有没有办法调整这个类来支持png图像?
P. *_*ith 44
function resize($newWidth, $targetFile, $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, $newHeight);
imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
if (file_exists($targetFile)) {
unlink($targetFile);
}
$image_save_func($tmp, "$targetFile.$new_image_ext");
}
Run Code Online (Sandbox Code Playgroud)
Jar*_*rod 12
我知道我迟到了,但这可能会帮助那些需要同样事情的人:
我写了一个可以做到这一点并且很好用且易于使用的类.它被称为
PHP Image Magician
$magicianObj = new imageLib('racecar.jpg');
$magicianObj -> resizeImage(100, 200);
$magicianObj -> saveImage('racecar_convertd.png', 100);
Run Code Online (Sandbox Code Playgroud)
它支持读取和写入(包括转换)以下格式
并且只能阅读
例
// Include PHP Image Magician library
require_once('php_image_magician.php');
// Open JPG image
$magicianObj = new imageLib('racecar.jpg');
// Resize to best fit then crop
$magicianObj -> resizeImage(100, 200, 'crop');
// Save resized image as a PNG
$magicianObj -> saveImage('racecar_small.png');
Run Code Online (Sandbox Code Playgroud)
你可以试试这个.目前它假设图像永远是jpeg.这将允许您加载jpeg,png或gif.我没有测试但它应该工作.
function resize($newWidth, $targetFile) {
if (empty($newWidth) || empty($targetFile)) {
return false;
}
$fileHandle = @fopen($this->originalFile, 'r');
//error loading file
if(!$fileHandle) {
return false;
}
$src = imagecreatefromstring(stream_get_contents($fileHandle));
fclose($fileHandle);
//error with loading file as image resource
if(!$src) {
return false;
}
//get image size from $src handle
list($width, $height) = array(imagesx($src), imagesy($src));
$newHeight = ($height / $width) * $newWidth;
$tmp = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
//allow transparency for pngs
imagealphablending($tmp, false);
imagesavealpha($tmp, true);
if (file_exists($targetFile)) {
unlink($targetFile);
}
//handle different image types.
//imagepng() uses quality 0-9
switch(strtolower(pathinfo($this->originalFile, PATHINFO_EXTENSION))) {
case 'jpg':
case 'jpeg':
imagejpeg($tmp, $targetFile, 95);
break;
case 'png':
imagepng($tmp, $targetFile, 8.5);
break;
case 'gif':
imagegif($tmp, $targetFile);
break;
}
//destroy image resources
imagedestroy($tmp);
imagedestroy($src);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71676 次 |
| 最近记录: |