从上传的图像创建缩略图
为上传的图像生成缩略图可确保它们不会出现扭曲,同时保留原始图像质量。在这个问题中,用户寻求有关创建和存储上传图像的原始版本和缩略图版本的指导。
用户的数据库设置包括两个表“user_pic”和“user_pic_small”,用于存储原始图像和缩略图版本分别。提供的 PHP 代码处理图像上传和存储,但缺乏缩略图创建的逻辑。
使用 PHP 的 GD 库的解决方案:
该解决方案涉及使用 PHP 的 GD 库操作并生成缩略图。定义一个函数以将上传的图像、指定的尺寸和质量作为输入。它会计算适当的尺寸并创建具有按比例大小的空白的缩略图,以确保一致性。
用法示例:
function makeThumbnails($updir, $img, $id) { // Define thumbnail size $thumbnail_width = 134; $thumbnail_height = 189; // Calculate dimensions // ... // Check image type and process if ($arr_image_details[2] == IMAGETYPE_GIF) { $imgt = "ImageGIF"; } elseif ($arr_image_details[2] == IMAGETYPE_JPEG) { $imgt = "ImageJPEG"; } elseif ($arr_image_details[2] == IMAGETYPE_PNG) { $imgt = "ImagePNG"; } if ($imgt) { // Image manipulation // ... // Output the thumbnail $imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img"); } }
使用 Imagick 的解决方案:
该解决方案利用 Imagick 库,该库提供更高级的图像处理功能。该函数使用 Imagick 类的内置方法生成具有指定尺寸和质量的缩略图。
用法示例:
/** * Generate Thumbnail using Imagick class */ function generateThumbnail($img, $width, $height, $quality = 90) { if (is_file($img)) { $imagick = new Imagick(realpath($img)); // Image processing // ... // Output the thumbnail file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick); return true; } else { throw new Exception("No valid image provided with {$img}."); } }
结论:
两种解决方案都提供了从上传图像创建缩略图的有效方法,同时保持其质量。选择的方法取决于应用程序的具体要求和可用资源。
以上是如何在 PHP 中高效地从上传的图片生成缩略图?的详细内容。更多信息请关注PHP中文网其他相关文章!