命名缩略图并在PHP中查找它们的最佳方法

时间:2009-08-02 04:40:38

标签: php

下面的PHP代码将拍摄图像,并在文件名和文件扩展名之间添加 _thumb 一词

在某些页面上调用此文件最多50次以显示用户照片,请不要仅为此示例链接到另一台服务器上的完整路径图像,文件路径通常是从存储路径的Mysql DB中提取的用户照片

我目前正在重构我网站上的很多内容,但我想知道这是不是很糟糕?

我存储这样的缩略图:
filename_thumb.jpg

因此,在查看缩略图的页面上,我只有完整尺寸图像的路径,我必须在将图像显示到屏幕之前将_thumb部分添加到文件名中。

做类似事情会有更好的表现吗? t _ filename.jpg

来自数据库的数据如下:
user / photos / 1/23/45/34 / filename.jpg

因此,如果我更改了将拇指部分添加到名称前面的位置,是否仍需要运行下面的所有代码才能获得结果?请注意我从DB获取的路径不仅仅是一个文件名,它也保存了文件夹结构,文件夹总是不同。

<?php

$file = 'http://file-managers.net/skins/blue/images/actions/view_tree.png';
$fil_ext1 = pathinfo($file);
$fil_ext = $fil_ext1['extension']; 
$fil_explode = '.' . $fil_ext;
$arr = explode($fil_explode, '/skins/blue/images/actions/view_tree.png');
$pic1 = $arr[0] . "_thumb" . $fil_explode;

// will show;
// /skins/blue/images/actions/view_tree_thumb1.png
echo $pic1;

?>

3 个答案:

答案 0 :(得分:1)

我建议使用这样的文件夹结构:

images/
    originals/
    small/
    middle/
    big/

每张图片都会上传到images/originals/,较小的版本会在相应的文件夹中创建(根据需要添加)。在数据库中,您只存储原始*文件名。

*)请注意,您应该创建一个新的随机文件名,不要使用实际的原始用户提供的文件名。

包含图片时,您只需

echo "images/small/".$filename;  // (pseudocode)

如果您想要更改设计并需要调整图片大小,就像清理small/middle/等文件夹并使用小脚本重新创建它们一样简单,甚至是飞行的东西像:

// pseudocode
if (!file_exists('images/small/'.$filename)) {
    create_resized_image($filename, 'small');  // looks for "images/originals/$filename"
}
echo "images/small/".$filename;

您需要自己查看是否/如何将其映射到“user / photos / 1/23/45/34 / filename.jpg”方案。

答案 1 :(得分:0)

如果您担心处理时间,为什么不在数据库中存储两个不同的路径,或者在数据库中存储没有扩展名的文件扩展名和文件路径。这样,您可以在添加到数据库时执行一次处理。我个人喜欢第二种方法。

答案 2 :(得分:0)

我不认为你所做的简单字符串操作会增加大量的开销,即使你做了50次。你这样做的方式对我来说似乎是合理的。

如果您的PHP为5.2或以上,您可以通过爆炸跳过所有业务并获取文件名:

$fil_ext1['filename']

代替。