在图像上传时创建缩略图
当用户上传图像时,通常的做法是在原始图像旁边创建缩略图。这样可以更快地加载较小的图像,同时在必要时保持更高质量的版本进行显示。
数据库结构
在这种情况下,数据库有两列存储图像: user_pic 表示原始图像,user_pic_small 表示缩略图。
图像上传表单
图像上传表单 imageupload.php,处理文件上传和插入将全尺寸图像存入数据库。
图像处理 PHP 脚本
PHP 脚本 media.profileimage.upload.php 检查图像是否已上传并如果需要,创建缩略图。
ImageMagick(可选)
ImageMagick 可用于更有效地生成缩略图。这是使用 Imagick 的示例:
/** * @param string $img Image path * @param int $width * @param int $height * @param int $quality * @return bool * @throws Exception */ function generateThumbnail($img, $width, $height, $quality = 90) { $imagick = new Imagick(realpath($img)); $imagick->setImageFormat('jpeg'); $imagick->setImageCompression(Imagick::COMPRESSION_JPEG); $imagick->setImageCompressionQuality($quality); $imagick->thumbnailImage($width, $height, false, false); $filename_no_ext = reset(explode('.', $img)); return file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick); }
示例函数
另一个示例函数,makeThumbnails() 使用 PHP 的图像函数来创建缩略图:
function makeThumbnails($updir, $img, $id) { $width = 134; $height = 189; $thumb_beforeword = "thumb"; list($original_width, $original_height) = getimagesize("$updir$id" . '_' . "$img"); if ($original_width > $original_height) { $new_width = $width; $new_height = intval($original_height * $new_width / $original_width); } else { $new_height = $height; $new_width = intval($original_width * $new_height / $original_height); } $old_image = imagecreatefromjpeg("$updir$id" . '_' . "$img"); $new_image = imagecreatetruecolor($width, $height); imagecopyresized($new_image, $old_image, intval(($width - $new_width) / 2), intval(($height - $new_height) / 2), 0, 0, $new_width, $new_height, $original_width, $original_height); imagejpeg($new_image, "$updir$id" . '_' . "$thumb_beforeword" . "$img"); }
通过实施这些技术,您可以在原始图像旁边创建和存储缩略图,从而优化网站性能并增强用户体验。
以上是如何在保留原始图像的同时从上传的图像创建缩略图?的详细内容。更多信息请关注PHP中文网其他相关文章!