How to create thumbnails from uploaded images while preserving the original image?

Susan Sarandon
Release: 2024-11-07 10:20:02
Original
656 people have browsed it

How to create thumbnails from uploaded images while preserving the original image?

Creating a Thumbnail from an Uploaded Image While Preserving the Original

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);
}
Copy after login

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");
}
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template