【问题标题】:PHP Displaying Image Reduced and ResizedPHP显示图像缩小和调整大小
【发布时间】:2011-06-16 23:15:19
【问题描述】:

有没有办法在服务器上显示缩小和调整大小的图像而不保存缩小的图像?就像图像是 500x500 250KB 一样,我希望它在用户的浏览器中显示为 50x50 45kb。

如果没有办法,我如何临时创建一个到文件夹并在粘贴一段时间后删除?

【问题讨论】:

  • 这是可能的,但不是很理想,因为缩小图像非常昂贵。几十个同时请求调整大小的图像会给服务器带来很大的压力。后者可能可以使用清理脚本来完成(例如“删除所有早于 1 小时的文件”),但您必须添加更详细的信息才能获得相关提示

标签: php mysql image resize reduce


【解决方案1】:
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg($url);
$thumbImage = imagecreatetruecolor(50, 50);
imagecopyresized($thumbImage, $image, 0, 0, 0, 0, 50, 50, 500, 500);
imagejpeg($thumbImage,"",85);
imagedestroy($image);
imagedestroy($thumbImage);

但是您应该以某种方式缓存结果以降低服务器上的负载。

【讨论】:

  • 这是 PHP GD 的一部分,请查看 PHP 手册并阅读一些教程以了解如何更好地使用它们。这只是基于上述问题中的值的一个简单示例。
【解决方案2】:

我强烈建议您在上传时存储较小的版本并保留原始版本,而不是尝试缩小大图像的大小。使用像 S3 这样的云托管,你可以很便宜地做到这一点。

最合乎逻辑的过程是执行一次而不是多次的昂贵操作(缩放照片)。

在回答您的其他问题时,您可以使用 GD 或 imagemagick 缩小图像。有数百个关于如何做到这一点的教程。如果你想沿着这条路走下去,我会谷歌一个教程并试一试。

【讨论】:

    【解决方案3】:

    听起来您想要做的只是设置 HTML 图像标签的 heightwidth 属性。

    <img src='blah' height=50 width=50 />
    

    也可以使用百分比。

    CSS 允许更多的控制,并且可以应用于所有图像(或某个类的所有图像)。有了它,您可以指定max-heightmax-width,这不会影响较小的图像。以下将适用于所有具有resizedimages类的图像

    .resizedimages {max-height: 400px; max-width: 400px}
    

    如果您对保存调整大小的图像不感兴趣,那么这听起来完全是客户端问题。 PHP 与它无关(可能除了渲染必要的 HTML)

    注意:如果用户右键单击并保存图像,它仍然是完整的 250kB。这些纯粹是显示问题。如果这方面对您很重要,那么除了保存缩小副本之外,我不知道还有什么办法。

    这些可能不是最好的资源,只是谷歌排名靠前的几个。

    http://www.w3schools.com/tags/tag_img.asp
    http://www.fastechws.com/tricks/web/image-max-width-height.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      相关资源
      最近更新 更多