我目前使用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生成缩略图的最佳方法是什么?
修改
是否可以在不保存其他图片的情况下执行此操作,因为它会消耗更多空间?
答案 0 :(得分:2)
最好总是在上传/创建时生成图像的缩略图版本,而不是尝试通过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" />