我是非常新的在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);
答案 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);