I'm wanting to create a thumbnail from a user uploaded image so the image doesn't look squashed. But also would like a copy of the original image.. So I would like the original image to send the original image to my server and also create a thumb version and send it to my server so I can call each of them for each user that uploads their own image.
My user table has 2 tables
`user_pic` longblob NOT NULL, `user_pic_small` longblob NOT NULL,
I'm not crash hot with the image side of coding but this is what I have so far.
Imageupload.php
> <form id="myForm" action="include/media.profileimage.upload.php" > method="POST" enctype="multipart/form-data" target="ifr1"> > <input type = "file" name = "image_data" class = "input_text" style="width:800px;" > > <input type = "submit" name = "submit" class = "btn_login" value = "Upload"> > </form>
media.profileimage.upload.php
if(isset($_FILES['image_data'])){ if(is_uploaded_file($_FILES['image_data']['tmp_name'])) { // prepare the image for insertion $imgData =addslashes (file_get_contents($_FILES['image_data']['tmp_name'])); // get the image info.. $size = getimagesize($_FILES['image_data']['tmp_name']); // our sql query $creator_id = $_SESSION['id']; $sql = "UPDATE users SET user_pic='".$imgData."' WHERE id=$creator_id"; $sql2 = "INSERT INTO userphotos(photo_ownerid,photo_ispublic, photo_name, photo_caption, photo_imagedata) VALUES ($creator_id,1,'Profile Picture','Profile Picture','$imgData')"; // insert the image if(!mysql_query($sql)) { echo "Fail. It broke."; }else{ $c=mysql_query($sql2); echo "<script> parent.alert('Image Uploaded','',1000);</script>"; } } }
Would appreciate any help or guidence. Thankyou
To add a new thumbnail image for a selected file, first click the Add button as shown below in the image. 2. A new window will then appear and show a list that will let you select up to three files at once. Click Select File to select the image file you wish to assign as the thumbnail image file.
Settings on Thumbnail and HTML, such as Thumbnail size, border, link, title etc, then click "OK" to save these settings. Click the "Generate" icon, choose Output Mode "Generate thumbnails images only" and select an output folder, click "Generate" finally to create web thumbnails.
UPDATE:
If you want to take advantage of Imagick (if it is installed on your server). Note: I didn't use Imagick's nature writeFile
because I was having issues with it on my server. File put contents works just as well.
<?php /** * * Generate Thumbnail using Imagick class * * @param string $img * @param string $width * @param string $height * @param int $quality * @return boolean on true * @throws Exception * @throws ImagickException */ function generateThumbnail($img, $width, $height, $quality = 90) { if (is_file($img)) { $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)); if (file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick) === false) { throw new Exception("Could not put contents."); } return true; } else { throw new Exception("No valid image provided with {$img}."); } } // example usage try { generateThumbnail('test.jpg', 100, 50, 65); } catch (ImagickException $e) { echo $e->getMessage(); } catch (Exception $e) { echo $e->getMessage(); } ?>
I have been using this, just execute the function after you store the original image and use that location to create the thumbnail. Edit it to your liking...
function makeThumbnails($updir, $img, $id) { $thumbnail_width = 134; $thumbnail_height = 189; $thumb_beforeword = "thumb"; $arr_image_details = getimagesize("$updir" . $id . '_' . "$img"); // pass id to thumb name $original_width = $arr_image_details[0]; $original_height = $arr_image_details[1]; if ($original_width > $original_height) { $new_width = $thumbnail_width; $new_height = intval($original_height * $new_width / $original_width); } else { $new_height = $thumbnail_height; $new_width = intval($original_width * $new_height / $original_height); } $dest_x = intval(($thumbnail_width - $new_width) / 2); $dest_y = intval(($thumbnail_height - $new_height) / 2); if ($arr_image_details[2] == IMAGETYPE_GIF) { $imgt = "ImageGIF"; $imgcreatefrom = "ImageCreateFromGIF"; } if ($arr_image_details[2] == IMAGETYPE_JPEG) { $imgt = "ImageJPEG"; $imgcreatefrom = "ImageCreateFromJPEG"; } if ($arr_image_details[2] == IMAGETYPE_PNG) { $imgt = "ImagePNG"; $imgcreatefrom = "ImageCreateFromPNG"; } if ($imgt) { $old_image = $imgcreatefrom("$updir" . $id . '_' . "$img"); $new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height); imagecopyresized($new_image, $old_image, $dest_x, $dest_y, 0, 0, $new_width, $new_height, $original_width, $original_height); $imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img"); } }
The above function creates images with a uniform thumbnail size. If the image doesn't have the same dimensions as the specified thumbnail size (proportionally), it just has blackspace on the top and bottom.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With