下面的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;
?>
答案 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']
代替。