PHP缩略图生成
我正在尝试生成我的用户上传的图像的缩略图。通过让我的thumbnail类生成一个宽度和高度为原始图像50%的缩略图,我已经获得了基本的功能。但是,我想扩展它的功能,并强制执行缩略图的硬限制,在减少50%后,每侧的缩略图都将大于400px 这就是我到目前为止所做的:PHP缩略图生成,php,thumbnails,image-upload,Php,Thumbnails,Image Upload,我正在尝试生成我的用户上传的图像的缩略图。通过让我的thumbnail类生成一个宽度和高度为原始图像50%的缩略图,我已经获得了基本的功能。但是,我想扩展它的功能,并强制执行缩略图的硬限制,在减少50%后,每侧的缩略图都将大于400px 这就是我到目前为止所做的: $x = $image_info[0]; // width of original image $y = $image_info[1]; // height of original image $x_t = $x/2; // widt
$x = $image_info[0]; // width of original image
$y = $image_info[1]; // height of original image
$x_t = $x/2; // width of 50% thumbnail
$y_t = $y/2; // height of 50% thumbnail
$biggest = ($x_t > $y_t) ? $x_t : $y_t; // determine the biggest side of the thumbnail
if($biggest > 400)
{
// Enforce a 400px limit here
/// somehow :(
}
有了这个硬限制,我希望原始图像缩小到没有边超过400px,并且我希望另一面相对缩小,这样图像看起来就不会失真
由于数学和我一样糟糕,我无法找到一种计算图像尺寸的方法,我的缩略图类应该调整图像的大小
有什么想法吗?你必须计算一个比例因子:
$factor = $biggest / 400; // if 503, then factor = 1.2575;
$new_x = $x / $factor;
$new_y = $y / $factor;
并使用这两个新维度进行缩放。这将把$maxed的任何一边都减少到400,并按比例将其他维度减少到400以下。您必须检查每个长度,而不是同时检查两个长度:
if ($x > 400) {
$x_t = 400;
$y_t = $y * (400 / $x);
}
if ($y > 400) {
...
例如,如果$x为600,则计算值将变为$y_t=$y*(400/600),从而将$y减少到其原始值的2/3
并为$y侧添加相同的条件。此外,如果任何一方都不允许大于400,您可能希望同时应用计算。谢谢,但这似乎不起作用。当我上传2048/1216大小的图像时,缩略图显示为:800x475Nevermind,修复了它。不得不做:
$factor=$maxist/200代码>。谢谢!:)