3

我有一个名为“Gallery”的文件夹,我在其中创建了一个名为“Gallery-Thumbs”的缩略图文件夹,我在其中手动添加缩略图。

我的问题是手动添加缩略图或使用“GD”或“ImageMagick”动态创建缩略图是否更好。

手动添加缩略图的问题

  • 如果我忘记为照片添加缩略图,画廊链就会中断
  • 调整所有图像的大小以创建缩略图很乏味

那么使用 PHP ImageProcessing 函数是否会在创建缩略图时增加额外的开销,或者是正确的方法吗?

--更新回答查询

  1. 如何将图像添加到“画廊”文件夹?

    • 通过直接文件上传
  2. 如何访问这些图像和缩略图?

    • 我使用 glob 获取各个文件夹中的文件列表
  3. 您如何(想要)将图像映射到缩略图?

    • 对于缩略图,我使用 imageName-thumb.jpg,因此它们出现在列表中的顺序与它们在主图像文件夹中的顺序相同
4

5 回答 5

2

使用 PHP 创建一次缩略图,并将它们保存在具有相同文件名的“缩略图”目录中。然后直接使用这些现在可以使用的缩略图。

于 2012-05-07T12:31:06.863 回答
1

如果您使用一些动态图像处理工具,那么这将是一个非常耗时的过程,但它会是一项很棒的技术。

如果您要使用手动过程,那么:

  • 使用一些客户端脚本强制缩略图
  • 这取决于您的图像方向
于 2012-05-07T12:31:36.987 回答
0

我在上传过程中创建缩略图,或者保存在具有相同名称的不同目录中,或者将 th_ 添加到文件名的前面。您还可以上传一些代码以再次为您当前在图库中拥有的图像生成所有拇指,以防您错过任何一个。您还可以同时调整大小,添加水印或添加其他效果。这是我的画廊,我有一个拇指和正常大小;拇指在上传时被锐化并且正常的水印。两个版本都有阴影,调整大小等都是用 Imagemagick 完成的。 http://www.rubble.info/gallery/

如果您在显示之前检查文件是否存在并且它丢失了,您可以显示默认图像。

你可以查看我的网站,了解可以用 php 和 Imagemagick 做的许多不同的事情。

于 2012-05-07T12:51:13.547 回答
0

我强烈建议使用带有某种缓存的 GD 来保留那些不变的缓存。然而,已经有一个很棒的库可以做到这一点。它绝对是我的最爱,只需使用 GET URL 即可轻松进行图像压缩和调整大小。

通过 ShiftingPixel 尝试 Smart Image Resizer:http: //shiftingpixel.com/2008/03/03/smart-image-resizer/

如果您愿意,您可以使用我使用其页面来源制作的网站作为参考:http ://www.eastwood-whelpton.co.uk/about/gallery.php

该网站上的几乎所有图像都使用 Smart Image Resizer GD 库。

如果您需要示例,我还可以提供我使用的 PHP 代码。此特定代码会自动将在我的画廊文件夹中找到的任何图像添加到此页面。

于 2012-05-07T12:54:57.173 回答
0

如前所述,您需要支持 GD 的 PHP 5。如果您有这些,那么这里有一个非常方便的功能,可以$options从给定目录 ( ) 中的每个图像创建给定尺寸和质量 ( ) 的缩略图$from_dir并将它们保存到另一个目录 ( $to_dir)。

function make_thumbnails($from_dir,$to_dir, $options){
    $files = scandir($from_dir);
    $exclude = array('.','..','etc.');
    foreach($files as $fi => $fv){
        if(!in_array($fv,$exclude)){
            $from_file = $from_dir.$fv;
            $to_file = $target_dir.$fv;
            list($img_width, $img_height,$img_type) = getimagesize($from_file);
            $scale = min($options['max_width'] / $img_width,
                                        $options['max_height'] / $img_height
                               );
            $new_width = $img_width * $scale;
            $new_height = $img_height * $scale;
            $new_img = imagecreatetruecolor($new_width, $new_height);
            $src_img = imagecreatefromjpeg($from_file);
            $success = $src_img && imagecopyresampled(
                    $new_img,
                    $src_img,
                    0, 0, 0, 0,
                    $new_width,
                    $new_height,
                    $img_width,
                    $img_height
            ) && imagejpeg($new_img, $to_file, $options['quality']);
                              //Monitor results with $success - returns 1 or null
            echo '<br />success:['.$success.']';
        }
    }
}

//Set options
$from_dir = ':/source/dir';
$to_dir = ':/destination/dir';
$options = array();
$options['max_width'] = 100;
$options['max_height'] = 100;
$options['quality'] = 100;

// Make thumbs...
make_thumbnails($from_dir,$to_dir,$options);
于 2012-06-10T21:54:40.470 回答