图像在PHP中调整大小

时间:2013-04-13 07:02:00

标签: php

我是非常新的在php中调整图像大小。基本上我想使用上传的图像制作缩略图。我使用下面的代码,但它不工作,任何人都可以帮助我吗?.. 在此先感谢...

$source_image = $path.$row->photosfolder;
$size = getimagesize($source_image);
$w = $size[0];
$h = $size[1];
$simg = imagecreatefromjpeg($source_image);
$dimg = imagecreatetruecolor(150, 225);
$wm = $w / 150;
$hm = $h / 225;
$h_height = 225 / 2;
$w_height = 150 / 2;

if ($w > $h) {
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h);
}
elseif (($w < $h) || ($w == $h)) {
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h);
}
else {
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h);
}

$thumb_image = imagejpeg($dimg, $simg, 100);

3 个答案:

答案 0 :(得分:0)

检查timthumb.php易于使用,您可以找到完整教育代码

答案 1 :(得分:0)

如果你想调整图像的大小,你应该在客户端进行,因为PHP图像处理需要大量的内存和CPU时间,而且不必在服务器端完成(没有访问db的权限) ,无法访问会话等。)

如果您仍想在PHP上执行此操作,则可以使用该功能来获得正确的大小:

list($realW, $realH) = getimagesize($source_image);

$realR = $realW / $realH;
$thumbR = $thumbW / $thumbH;

// If you want your resize image to fit inside the max thumb size :

if($realR > $thumbR) // Real image if flatter than thumb
{
    $newW = $thumbW;
    $newH = $newW / $realR;
}
else
{
    $newH = $thumbH;
    $newW = $newH * $realR;
}

// Or if you want your resize image to be as small as possible but
// not smaller than your thumb. This can be helpful in some cases.

if($realR < $thumbR)
{
    // Same code
}

然后像你一样使用copy resampled(如果你不能让它工作,请阅读php手册,下面是函数概要下面的例子)。

如果您想使用javascript调整图片大小,可以使用<canvas>

var canvas = document.createElement('canvas');
var image = document.getElementById('image');
var context = canvas.getContext('2d');
context.save();
context.drawImage(image, /* Here you put the right values using the algorithms above */);
context.restore();
var thumb = document.createElement('image');
thumb.src = canvas.toDataUrl();

或类似的东西。您可以根据具体情况更改一些内容。

答案 2 :(得分:0)

请尝试使用以下代码,它将调整图像大小并创建新缩略图。新尺寸定义为100 X 100.此示例还将保持图像的预期比例。 注意:

1.如果要设置完整路径,图像路径将是目录路径。  在我们考虑jpg文件的例子中,你可以用于PGN&amp;带有imagecreatefrompng的gIF文件,imagecreatefromgif。  3.这将创建PNG文件。

$_imagePath = 'somefile.jpg';
$im = imagecreatefromjpeg($_imagePath);

imagealphablending($im, true);

$_orgWidth = imagesx($im);
$_orgHeight =  imagesy($im);

$_newWidth = 100;
$_newHeight = 100;

$_finalHeight = $_orgHeight * ( $_newWidth/ $_orgWidth);
    if($_finalHeight > $_newHeight){
        $_newWidth = $_orgWidth * ($_newHeight / $_orgHeight);
    }else{
        $_newHeight = $_finalHeight ;
    }


$_thumb = imagecreatetruecolor($_newWidth, $_newHeight);
imagealphablending($_thumb, true);
imagesavealpha($_thumb, true);

imagecopyresampled($_thumb, $im, 0, 0, 0, 0, $_newWidth, $_newHeight, $_orgWidth , $_orgHeight  );

imagepng($_thumb, 'newname.png');
imagedestroy($_thumb);