02. juni 2003 - 15:08Der er
13 kommentarer og 1 løsning
Resize billede/blob
Jeg skal have lavet noget der kan resize mine billeder som ligger i min database.. Jeg ved bare lige ikke hvordan man gør det...
Billederne skal kunne vises som Thumbs, og meget gerne fylder mindre end den rigtige størrelse, eller tager det lidt tid at hente 20 billeder a 150 kb...
<? /* resizeToFile resizes a picture and writes it to the harddisk */ $sourcefile = 'img/ditbillede.jpg'; $dest_x = 120; $dest_y = 100; $targetfile = 'img/thumb.jpg'; $jpegqual = 90; /* Get the dimensions of the source picture */ $picsize=getimagesize("$sourcefile"); $source_x = $picsize[0]; $source_y = $picsize[1]; $source_id = imageCreateFromJPEG("$sourcefile"); /* Create a new image object (not neccessarily true colour) */
$target_id=imagecreatetruecolor($dest_x, $dest_y); /* resize the original picture and copy it into the just created image object. Because of the lack of space I had to wrap the parameters to several lines. I recommend putting them in one line in order keep your code clean and readable */
$target_pic=imagecopyresampled($target_id,$source_id, 0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); /* Create a jpeg with the quality of "$jpegqual" out of the image object "$target_pic". This will be saved as $targetfile */
imagejpeg ($target_id,"$targetfile",$jpegqual); ?> ------------------------------------------------- ps.: imagecreatetruecolor() kræver du har gd2 installeret.
detox -> Jeg kan ikke få den til at lave en norm. og thumb som den uploader samtidig, jeg har fundet ud af hvordan det ellers fungere... Du kan da lige se sourcecoden...
<?php $photoFileName = $_FILES['photo']['name']; // get client side file name if ($photoFileName) // file uploaded { $fileNameParts = explode(".", $photoFileName); $fileExtension = end($fileNameParts); // part behind last dot if ($fileExtension != "jpg" && $fileExtension != "JPEG" && $fileExtension != "JPG") { die ("Choose a JPG for the photo"); } $photoSize = $_FILES['photo']['size']; // size of uploaded file
// read photo $tempFileName = $_FILES['photo']['tmp_name']; // temporary file at server side $tempFile = fopen($tempFileName, "r"); $binaryPhoto = fread($tempFile, fileSize($tempFileName));
if (!$src_img) // error, image is not a valid jpg { die ("Sorry. It was not possible to read photo $photoFileName. Choose another photo in JPG format."); } // // RESIZE THE IMAGE // $width = imagesx($src_img); // get original source image width $height = imagesy($src_img); // and height
måske skal du droppe den her del: ob_start(); imageJPEG($dest_img); $binaryThumbnail = ob_get_contents(); ob_end_clean(); eller er det nogle funktioner du gar et sted? og her begynder du at bruge $photo: $data = addslashes(fread(fopen($photo, "r"), filesize($photo))); det ved jeg ikke hvor du får fra? men hvad kommer der mere præcist i din database og hvad gør ikke?
$_FILES er en global variabel. $_FILES['photo']['name'] = det oprindelige filnavn. Du skal nok hellere bruge: $data = addslashes($binaryPhoto); hvis det da er den der driller. Hvilke data er det mere præcist du ikke kan skrive til databasen?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.