Creating Thumbnails on Image Upload
When users upload images, it's common practice to create thumbnails alongside the original image. This allows for faster loading of smaller images while maintaining a higher-quality version for display when necessary.
Database Structure
In this case, the database has two columns to store images: user_pic for the original image and user_pic_small for the thumbnail.
Image Upload Form
The image upload form, imageupload.php, handles the file upload and inserts the full-size image into the database.
Image Processing PHP Script
The PHP script, media.profileimage.upload.php, checks if an image was uploaded and creates a thumbnail if needed.
ImageMagick (Optional)
ImageMagick can be used to generate thumbnails more efficiently. Here's an example using 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); }
Example Function
Another example function, makeThumbnails() uses PHP's image functions to create thumbnails:
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"); }
By implementing these techniques, you can create and store thumbnails alongside the original images, optimizing website performance and enhancing user experience.
The above is the detailed content of How to create thumbnails from uploaded images while preserving the original image?. For more information, please follow other related articles on the PHP Chinese website!