Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP缩略图生成_Php_Thumbnails_Image Upload - Fatal编程技术网

PHP缩略图生成

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

我正在尝试生成我的用户上传的图像的缩略图。通过让我的thumbnail类生成一个宽度和高度为原始图像50%的缩略图,我已经获得了基本的功能。但是,我想扩展它的功能,并强制执行缩略图的硬限制,在减少50%后,每侧的缩略图都将大于400px

这就是我到目前为止所做的:

$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。谢谢!:)