South_Bridge Skrevet 10. mars 2008 Rapporter Del Skrevet 10. mars 2008 Jeg holder på å mekke mitt "eget" php galleri med mysql. Har lånt kode til å resize bildene men får det ikke til. //image_resize.php <?php // Create source image and dimensions $src_img = imagecreatefrompng($_GET['image']); $srcsize = getimagesize($_GET['image']); $dest_x = 200; $dest_y = ($dest_x / $srcsize[0]) * $srcsize[1]; $dst_img = imagecreatetruecolor($dest_x, $dest_y); // Resize image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1]); // Output image header("content-type: image/jpeg"); imagejpeg($src_img); // Destroy images imagedestroy($src_img); imagedestroy($dst_img); ?> // Image using the resize <img src=image_resize.php?image="pic.jpg"/> Koden var egentlig for png bilder, men jeg trodde jeg hadde endret på koden slik at det funker for mine .jpg bilder Lenke til kommentar
Zandar Skrevet 10. mars 2008 Rapporter Del Skrevet 10. mars 2008 Endre denne linjen $src_img = imagecreatefrompng($_GET['image']); til $src_img = imagecreatefromjpeg($_GET['image']); Har du forresten innstallert GD biblioteket? Du bør også sjekke at $_GET['image'] er er satt og inneholder referanse til gyldig bilde. f.eks if (isset($_GET['image']) && !empty($_GET['image'])) { $src_img = imagecreatefromjpeg($_GET['image']); //Sjekke at $src_img er gyldig ressurs if($src_img) { //endre størrelse på bilde osv... } else { echo 'Fant ikke bilde, eller ugyldig bildeformat'; } } else { echo 'bilde-url eller fil-referanse mangler'; } Lenke til kommentar
South_Bridge Skrevet 10. mars 2008 Forfatter Rapporter Del Skrevet 10. mars 2008 (endret) Det er fremdeles noe galt. I steden for bilder får jeg bare frem tynne svarte fliser (guess 20px høy og 5px vid kanskje?) der bildene skulle ha hvert Resizekoden: <?php // Create source image and dimensions $src_img = imagecreatefromjpeg($_GET['image']); $srcsize = getimagesize($_GET['image']); $dest_x = 200; $dest_y = ($dest_x / $srcsize[0]) * $srcsize[1]; $dst_img = imagecreatetruecolor($dest_x, $dest_y); // Resize image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1]); // Output image header("content-type: image/jpeg"); imagejpeg($src_img); // Destroy images imagedestroy($src_img); imagedestroy($dst_img); ?> PHP koden: $result = mysql_query("SELECT * FROM gal_test") or die(mysql_error()); while($row = mysql_fetch_array($result)) { echo " <a href=" . $row['url'] . " target=_blank>"; echo " <img src=/galleri/galleri_image_resize.php?image=" . $row['url'] . "/></a>"; } Fra php koden er det da meninga at brukeren skal klikke på det for å få et større et... noen som ser noe galt? url er en rad og feks info er "/galleri/test/bilde1.jpg" uten"" Endret 10. mars 2008 av South_Bridge Lenke til kommentar
Gjest Slettet+142 Skrevet 10. mars 2008 Rapporter Del Skrevet 10. mars 2008 Er det ikke imagejpeg($dst_img); du må bruke? De resizede bildet fra imagecopyresampled havner vel i alle fall i $dst_img om jeg ikke har sett feil. Lenke til kommentar
South_Bridge Skrevet 10. mars 2008 Forfatter Rapporter Del Skrevet 10. mars 2008 Fremdeles svart... Lenke til kommentar
Wackamole Skrevet 10. mars 2008 Rapporter Del Skrevet 10. mars 2008 Jeg kjører samme script, men jeg bruker fast str på bildene <?php // Create source image and dimensions $src_img = imagecreatefromjpeg($_GET['img']); $srcsize = getimagesize($_GET['img']); $dest_x = 350; $dest_y = 300; $dst_img = imagecreatetruecolor($dest_x, $dest_y); // Resize image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1]); // Output image echo imagejpeg($dst_img); // Destroy images imagedestroy($src_img); imagedestroy($dst_img); ?> Lenke til kommentar
South_Bridge Skrevet 11. mars 2008 Forfatter Rapporter Del Skrevet 11. mars 2008 (endret) ser du setter både høyden og bredden... burde du ikke ha fulgt matematikken på y? har jo egentlig ingen mening om du setter x, og y og ikke tar med ratioen. da kunne du kanskje ha gjort denne jobben enklere med html/css med å sette høyde og vidde? Når jeg bruker koden din får jeg mye av dette: Sº’4Ûåà¶ÝÎ3úæ¾_ˆ—¿+þGT)¥²&¾½{ˆÙ €ÀúôúþUÈ&SÍù‡ÞaÛéUüÃ(TƒÁ=°}jxÜl+åùJÿ�ŸZâ–»›%m…3ÛÕ†ã�3.x¦HÑÉuÛ–ØO%WŒgê}*¨2‰›z#Mû_ø×ðïQÙÃ,Á±E$6Aê3õ¨åIîR×s~}Ž±ùR3(Îp£¥rwž+ÖnhtÙ1203À? ¯é]uÄF-ªI–Û×W“G¬On—zqRIIsëÏçÞ»0²Jç˜MÅFÎ×¹¸þ/YtÙMçÏya<£³Ï'“Øzñ\M÷ˆä¹¿ß©ÁF0…bR¯ŽÊOR=ò)uX&ò^hðxÏCÆN{䎞¢°á‚MJyÊ—P� œøs^–ÓŒ=¢Iwf4ÝYÅ)·sbñ´Í&䥂G¨Ìpþ}Ì"ƒÈ ™Á8#$çè+wDñEÓ."¿†;i™µ]¾h¹ïþ{Wso-ÁŠLç A'¨#Š˜Åö$qDw¢, 9�dçõ®¹UæºèÂPr³“÷—S¦‡Ç 4¬¦ÊÞe'b²‡e÷ Ô¥fk:¦›¥]O¨Y0ÔfÔ›Ï0ÝGºqÈÃ)'{g8ÏLt®~s1$•Áèi.l˜ª»©Xæ@èGL‚AÇâ)Ñz´EX%fŽÃ:ÕÆ«¬Cy,QG=‘ ’¡”rcÚ8dŒÏ®k¼Â^2¾Û}j°Þyä0•ù<®›opþ’nÞD›FüŸ½Ô{c·ã]–§áöŸÄo>É"5®ö@1ƒ»#øMrãç\îÍ'f¾Gn)§o/Ôu—‚t-øÝÙX“:ŽG2(ÿ�w<Ï?J+* JëLÔY.]Êü²+3)_OΊàJ£•Ûæó¿üÓQ²ÓCŠºÔžæBYŽ*(˜Èù¢ŠûFÛGŠKBÍåÄ·R‚ÁBŒ�? [->k©U"‰å•ÎK1 på echo imagejpeg($dst_img);. Jeg tror da at bilde blir lest feil... men vet ikke. Har prøvd litt frem og tilbake. Endret 11. mars 2008 av South_Bridge Lenke til kommentar
kakkle Skrevet 11. mars 2008 Rapporter Del Skrevet 11. mars 2008 Vel, det ser ikke så galt ut det. Dersom du åpner et jpeg bilde i notepad, vil du nok få noe lignende Virker som om du ikke har med header: header("content-type: image/jpeg") Lenke til kommentar
Zandar Skrevet 11. mars 2008 Rapporter Del Skrevet 11. mars 2008 Regner med at feilen i ditt script er at du har feil path til bildene du prøver å laste inn. Ser av det du har skrevet at bildene ligger i /galleri/test/ mens galleri_image_resize.php ligger i /galleri/. Når scriptet tar imot /galleri/test/bilde1.jpg vil det lete i /galleri/galleri/test/ som er feil path til bildet. Har du forresten feilrapportering påslått? Det kan virke som du ikke har det da du vil få endel feilmeldinger med det på. På en utviklingsserver bør man ha feilrapportering påslått, eller i det minste legge til denne linja øverst i koden. error_reporting(E_ALL); Hvorfor benytter du deg ikke av koden jeg skrev tidligere? Det er ikke en ulempe å gjøre script litt mere robust mot eventuelle feil som kan oppstå.. Det er også lettere å finne hvor en feil oppstår om man legger inn sjekk på om funksjoner som kan feile returnerer korrekt data som f.eks imagecreatefromjpeg(). Her er en utgave som fungerer og håndterer feil ved manglende bilde eller ugyldig bildeformat. <?php //Sjekke at bilde-url er satt i url if (isset($_GET['image']) && !empty($_GET['image'])) { $src_img = @imagecreatefromjpeg($_GET['image']); //Sjekke at $src_img inneholder gyldig ressurs if ($src_img) { $srcsize = getimagesize($_GET['image']); $dest_x = 300; $dest_y = ($dest_x / $srcsize[0]) * $srcsize[1]; $dst_img = imagecreatetruecolor($dest_x, $dest_y); //Resize image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1]); // Output image header("content-type: image/jpeg"); imagejpeg($dst_img); // Destroy images imagedestroy($src_img); imagedestroy($dst_img); } else { echo 'Fant ikke bilde eller ugyldig bildeformat'; exit(); } } else { echo 'bilde-url eller fil-referanse mangler'; exit(); } ?> Lenke til kommentar
South_Bridge Skrevet 11. mars 2008 Forfatter Rapporter Del Skrevet 11. mars 2008 Nå har jeg endret litt på koden, for jeg innser at det er smartere å lage et thumb av et bilde når du laster det opp enn at alle besøkende skal stresse CPUen på serveren med matematikken bak resizinga. if(isset($_POST['addpic'])) { //?heck that we have a file if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { //Check if the file is JPEG image and it's size is less than 350Kb $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < 350000)) { //Determine the path to which we want to save this file $newname = dirname(__FILE__) . "/galleri". $filename; //Check if the file with the same name is already exists on the server if (!file_exists($newname)) { //Attempt to move the uploaded file to it's new place if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) { echo "<p>Suksess, filen ble lagret som: " . $newname . "</p>"; $filename = "galleri" . $filename; //Sjekke at bilde-url er satt i url //if (isset($_GET['image']) && !empty($_GET['image'])) { $src_img = @imagecreatefromjpeg($filename);//$_GET['image']); //Sjekke at $src_img inneholder gyldig ressurs if ($src_img) { $srcsize = getimagesize($filename); $dest_x = 200; $dest_y = ($dest_x / $srcsize[0]) * $srcsize[1]; $dst_img = imagecreatetruecolor($dest_x, $dest_y); //Resize image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_x, $dest_y, $srcsize[0], $srcsize[1]); // Output image header("content-type: image/jpeg"); imagejpeg($dst_img); // Destroy images imagedestroy($src_img); imagedestroy($dst_img); } else { echo 'Fant ikke bilde eller ugyldig bildeformat'; exit(); } //} else { // echo 'bilde-url eller fil-referanse mangler'; // exit(); //} } else { echo "<p>Det skjedde en feil ved opplastingen!</p>"; } } else { echo "<p>Error: Fil ".$_FILES["uploaded_file"]["name"]." finnes allerede!</p>"; } } else { echo "<p>Error: Bare JPEG bilder under 350Kb kan lastes opp!</p>"; } } else { echo "<p>Error: Ingen fil ble lastet opp!</p>"; } } Dette er da et php dokument som poster til seg selv. Formen inneholder browser tingen og jeg får lasta opp bilde til serveren! Litt rar navn det får da, siden galleri blir lagt til. Men dette fungerer da. Det som ikke fungerer er den resize tingen... Jeg har hittil bare valgt å poste den ut som en del av svaret når du laster opp et bilde for å se at det fungerer Lenke til kommentar
Wackamole Skrevet 11. mars 2008 Rapporter Del Skrevet 11. mars 2008 For og vise bilde med mitt script må du skrive selve filen inn i <img> taggen slik: <img src="image_rezise_script.php?img=path/to/your/image.jpg" alt="hvaf***duvil"> Lenke til kommentar
South_Bridge Skrevet 11. mars 2008 Forfatter Rapporter Del Skrevet 11. mars 2008 Nå ble jeg ferdig! Galleriet finner dere på www.larsey.net på 'Om meg' seksjonen. Linken finner dere på venstre side. :-) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå