akano1
akano1

Reputation: 41614

how to make thumbnails with php

I was just wondering how I can make thumbnails of images stored in hdd and use them in an html page, also I need the thumbnails to be able to enlarge (to their original size) if clicked on preferably inside a div tag on the same page, I would appreciate if anyone could put me in the right direction

thanks

Upvotes: 2

Views: 2377

Answers (8)

Pavel Petrov
Pavel Petrov

Reputation: 730

In my experience GD is not very memory-effective for large images, so I strongly encourage you to use Imagick. I`ve written a code snippet for thumbnail generation with php using the Imagick library. You can modify it to save the image instead of echoing it using http://php.net/manual/en/imagick.writeimage.php

Upvotes: 0

karthi
karthi

Reputation: 31

its so simple,if you have any queries mail at [email protected]

$ffmpeg = "ffmpeg Installed path"

$flvfile = "source video file with root path"

$png_path " "Destination video file with root path and file type"

exec("$ffmpeg -y -i $flvfile -vframes 1 -ss 00:01:60 -an -vcodec png -f rawvideo -s 110x90 $png_path");

all the best....

Upvotes: 1

Paulraj
Paulraj

Reputation: 3397

maxImageUpload is useful for creating thumbnails, normal image with an original image.

You can use jQuery to enlarge the thumbnail image.

Upvotes: 0

Paul Lammertsma
Paul Lammertsma

Reputation: 38252

You will need the GD extension enabled. The following code will create a thumbnail file in a subdirectory called ~tmb for a JPEG, PNG and GIF file:

$invalid = true;
if ($file != '.' and $file != '..') {
    if (filetype($path_abs.$file) == "file") {
        $ext = strtolower(substr($file,strrpos($file,'.')+1));
        if ($ext == 'jpg' || $ext == 'jpeg') {
            $origimg = @imagecreatefromjpeg($path_abs.$file);
        } elseif ($ext == 'png') {
            $origimg = @imagecreatefrompng($path_abs.$file);
        } elseif ($ext == 'gif') {
            $origimg = @imagecreatefromgif($path_abs.$file);
        }
        if ($origimg !== false) {
            $nheight = 0;
            $nwidth = 0;
            $use_orig = false;
            if ($width<=160 and $height<160) {
                $nwidth = $width;
                $nheight = $height;
                $use_orig = true;
                $invalid = false;
            } else {
                if ($width>$height and $width>0) {
                    $nheight = intval((160 / $width) * $height);
                    $nwidth = 160;
                } elseif ($height>0) {
                    $nwidth = intval((160 / $height) * $width);
                    $nheight = 160;
                } else {
                    $image = false;
                }
                if ($nheight > 0 and $nwidth > 0) {
                    $newimg = imagecreatetruecolor($nwidth, $nheight);
                    $bgc = imagecolorallocate ($newimg, 238, 238, 238);
                    imagefilledrectangle ($newimg, 0, 0, $nwidth, $nheight, $bgc);
                    if (@imagecopyresampled($newimg, $origimg, 0, 0, 0, 0, $nwidth, $nheight, $width, $height)) {
                        $image = imagejpeg($newimg, $path_abs.'~tmb/'.$file);
                        $invalid = false;
                    } elseif (@imagecopyresized($newimg, $origimg, 0, 0, 0, 0, $nwidth, $nheight, $width, $height)) {
                        $image = imagejpeg($newimg, $path_abs.'~tmb/'.$file);
                        $invalid = false;
                    }
                }
            }
        }
    }
}
if (!$invalid) {
    if ($use_orig) {
        echo '<img src="'.$file.'" alt="" />';
    } else {
        echo '<img src="~tmb/'.$file.'" alt="" />';
    }
} else {
    echo '<p>Error for file '.$file.'</p>';
}

In the above code, it resizes them to 160x160, though maintaining aspect ratio.

Upvotes: 5

TheBrain
TheBrain

Reputation: 5608

the best way I found is to use the phpThumb class (http://phpthumb.sourceforge.net/).

It has everything you need and more, including caching, filters, watermarks and other cool stuff. Just look at the demo page.

Upvotes: 0

jishi
jishi

Reputation: 24604

Lookup the PECL extension Imagick. It's usually installable with standard package-managers.

https://www.php.net/Imagick

You can either dynamically create the thumbnails and serve them using .php files (slow) or make a thumbnail-copy that you store on the server (prefered)

Upvotes: 0

Rik Heywood
Rik Heywood

Reputation: 13972

You can use the GD library in PHP to load and resize your images to generate the thumbnails

http://us.php.net/manual/en/image.examples.php

Upvotes: 0

Damien MATHIEU
Damien MATHIEU

Reputation: 32629

The gd library allows you to manipulate images. You will find an article to generate thumbnails here.

If you want to allow your users to view the thumbnail and the original size, the best way is to keep the two versions. And to display either one or the other.

Upvotes: 3

Related Questions