【问题标题】:What is the best to use phpthumb?什么是最好的使用 phpthumb?
【发布时间】:2012-03-09 22:02:08
【问题描述】:

我目前使用 phpthumb 为个人资料图片生成缩略图。 http://phpthumb.gxdlabs.com/

这是我目前的方法:

<?php
$path_to_profile_pic = '../icons/default.png';
$profile_pic = file_get_contents('icons/default.png');
$small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true);
$small_profile_pic->adaptiveResize(25, 25);
$small_profile_picAsString = $small_profile_pic->getImageAsString();
?>
<img src="data:image/png;base64,<?php echo base64_encode($small_profile_picAsString); ?>" width="25" height="25" />

但是,由于 base64,这非常慢,因为它会在您的代码中生成大量文本。 使用 phpthumb 生成缩略图的最佳方法是什么?

编辑

有没有办法在不保存另一张图片的情况下做到这一点,因为它会占用更多空间?

【问题讨论】:

    标签: php base64 thumbnails image phpthumb


    【解决方案1】:

    您最好总是在上传/创建时生成图像的缩略图版本,而不是尝试通过 php 脚本按需提供它们。您可以使用您的一些代码使用 php 将生成的文件缓存到文件系统,但这仍然比使用 apache 提供它们要慢得多。

    如果您无法在上传/创建时创建缩略图,您可以通过将缩小的缩略图缓存到文件系统并为每个后续请求提供它们来优化您当前的实现:

    <?php
    $path_to_thumb_pic = '../icons/default_thumb.png';
    if (!file_exists($path_to_thumb_pic)) {
      $path_to_profile_pic = '../icons/default.png';
      $profile_pic = file_get_contents('icons/default.png');
      $small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true);
      $small_profile_pic->adaptiveResize(25, 25);
      $small_profile_pic->save($path_to_thumb_pic);
    }
    ?>
    
    <img src="<?php echo $path_to_thumb_pic; ?>" width="25" height="25" />
    

    【讨论】:

    • 有没有办法在不保存另一个图像的情况下这样做,因为它会占用更多空间?
    • @MicoAbrina 如果不是磁盘,那么唯一的另一个地方就是某种内存缓存中的内存。但是,如果您担心磁盘空间,那么我想内存也会用完。磁盘空间是目前最便宜的硬件资源。这真的是个问题吗?
    • 我将其用于我网站的个人资料图片。这样做的问题是,如果头像发生变化,系统如何知道生成另一个缩略图?
    • @MicoAbrina 这就是为什么我强烈建议在创建时生成缩略图。当有人上传新照片时,您会创建并覆盖任何现有的缩略图。你用一块石头杀死两只鸟。
    • 好的,但是如果可以说,我做到了,将我的网站向公众发布,并意识到我需要生成更多缩略图。如何为当前用户生成新的缩略图?
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2011-11-28
    • 2015-04-29
    • 2010-12-10
    • 2011-10-13
    相关资源
    最近更新 更多