PHP在不保存文件的情况下调整图像大小

我的图片在我的网站上显示为缩略图。 缩略图的大小差别很大。 理想情况下,我不必在每个缩略图的尺寸中保存每张照片的副本。 相反,我可以在PHP中指定最终尺寸,并在从服务器发送图像之前调整图像大小。

不想在照片上传到服务器时调整其大小。 由于每个缩略图的大小,我无法保存图像。

问题在于缩略图的大小因页面布局而异。 因此,如果我将图像保存为每个缩略图大小,我将节省大约20倍的照片数量。

我试图保存一个'小''中'和'大'图像,然后我打电话给最接近缩略图大小的图像。 看起来有点粗糙,但听起来这可能是适当的方法。


那么,因为你不想耗尽你的磁盘空间,你将耗尽你的CPU资源,这更糟糕。
即使你认为你无法在磁盘上保存缩略图,你也必须这样做。 没有其他办法。 你只是浪费你的时间,最终转向正确的设置。


我做了类似的事情,你可以做的就是这样的事情,就像之前发布的一样,这可能会占用大量资源,并且保存到磁盘通常会更好,但是如果你真的想这样做,可以尝试一下:

<?php

function createThumbnail($filename, $thumbWidth){
    $details = getimagesize($filename);
    $content = file_get_contents($filename);
    $srcImg = imagecreatefromstring($content);
    $thumbHeight = $details[1] * ($thumbWidth / $details[0]);
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
    imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $details[0], $details[1]);
    imagejpeg($thumbImg, null, 100);
    imagedestroy($srcImg);
    return $thumbImg;
}

header("Content-Type: image/jpeg");
echo createThumbnail("/path/to/image.jpg", 200);

做到这一点的最佳方式当然是计算图像大小并返回带有如下适当属性的img标签:

"<img width="" . $width . "px" height="" . $height . "" src="..."/>"

“实时”调整图像尺寸太耗时。 考虑一下你显示20个图像的情况,每个图像缩放消耗150ms(取决于图像的大小和比例因子)。 这将大约超过3秒钟来显示单个页面。 你真的想强迫用户等待这么长的时间来看看页面的内容吗?

链接地址: http://www.djcxy.com/p/61149.html

上一篇: PHP resize an image without saving a file

下一篇: How to save an HTML5 Canvas as an image on a server?