下面的代码工作没有任何错误,但我的问题是当我创建缩略图有时缩略图是不可理解的(一些条件,如宽度非常大于高度)我也尝试了自动计算高度的代码。但它不会完美有效。我想要一个每次创建一个可理解的缩略图的代码。(可以生成裁剪的缩略图)
function make_thumb($src, $dest, $desired_width)
{
$source_image = imagecreatefromjpeg($src);
$width = imagesx($source_image);
$height = imagesy($source_image);
//even if height is calculated automatically using
$desired_height = floor($height * ($desired_width / $width));
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
imagejpeg($virtual_image, $dest);
}
答案 0 :(得分:1)
您可以使用Class SimpleImage
,例如:
// Usage:
// Load the original image
$image = new SimpleImage('lemon.jpg');
// Resize the image to 600px width and the proportional height
$image->resizeToWidth(600);
$image->save('lemon_resized.jpg');
您可以在class
https://gist.github.com/miguelxt/908143
github
答案 1 :(得分:1)
我写了一个脚本来制作风景或肖像图像。可能这会对你有所帮助
<?php
$thumbWidth = 200; // can change it to whatever required
$thumbHeight = 200; // can change it to whatever required
$img = imagecreatefromstring(file_get_contents('SAM_1883.JPG'));
$imgWidth = imagesx($img);
$imgHeight = imagesy($img);
$imgStart_x = 0;
$imgStart_y = 0;
$imgEnd_x = $imgWidth;
$imgEnd_y = $imgHeight;
if($imgWidth > $imgHeight){
$diff = $imgWidth - $imgHeight;
$imgStart_x = $diff / 2;
$imgEnd_x = $imgWidth - $diff;
}else{
$diff = $imgHeight - $imgWidth;
$imgEnd_y = $imgHeight - $diff;
}
$dest = imagecreatetruecolor($thumbHeight,$thumbHeight);
imagecopyresized($dest, $img, 0, 0, $imgStart_x, $imgStart_y, $thumbWidth, $thumbHeight, $imgEnd_x, $imgEnd_y);
imagePNG($dest,'abc'.rand(0,9999).'.png');
?>
但是,您可以根据自己的要求更改来源,拇指宽度,拇指高度和目的地。
答案 2 :(得分:0)
https://github.com/lencioni/SLIR可以动态调整图片大小。它会将图像缓存在服务器上,并使其可以在浏览器和代理服务器上缓存。加载图像时会发生调整大小,而不是在加载HTML时,因此HTML加载速度更快。