26. januar 2006 - 14:58Der er
15 kommentarer og 1 løsning
Crop Image vha GDLib
Hej. Jeg uploader et billede vha et script til en mappe på serveren og en tilhørende sti med billednavn gemmes i en MySQL-DB. Gennem scriptet dannes to billeder, et stort og et lille. Jeg vil gerne have at det lille (thumbnail) laves til et billede i 100x100 pixels som et udsnit (f.eks. midten) af billedet, altså først ned i størrelse (f.eks. 150x200) og derefter et udsnit på 100x100 heraf. Det store billede skal bibeholde sine højde/bredde-proportioner. Kan det lade sig gøre og/eller er der nogen der har et script der kan croppe? Evt. kan det måske gøres, når billedet hentes frem på hjemmesiden for at blive vist? Håber nogen kan hjælpe...
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
og kalder det med: <img src="682931-crop.php?url=http://www.sonomacheese.com/images/cow.jpg" />
Det kan laves anderledes, det var blot for at lege! :o)
Synes godt om
Slettet bruger
27. januar 2006 - 14:13#6
Nu er jeg ikke den helt store kode-ørn, så jeg skal nok lige have een lille smule mere hjælp: Dette er min situation : Jeg har et billede i bredformat som fysisk ligger i f.eks. "billedmappe" på serveren. Dette billede henter jeg navnet på (f.eks. billede1.jpg) fra min DB og lægger det i php-koden som værdien $billede. Herefter skal det så køres igennem dit script for at blive croppet til kvadratisk format, ikke? Og så bliver det vist på skærmen i den croppede udgave, eller..? Kan det lade sig gøre med den kode du har lavet? ...for jeg kan se at der, hvor du henter billedet er der en $_GET['url'])...Kan jeg så bare her skrive $_GET['billedmappe/$billede']) og så funker det?
Du bruger blot: $src_im = LoadJpeg("billedmappe/" .$billede);
Så skal du fjerne: header("Content-type: image/jpeg");
og rette: imagejpeg($dst_im,null, 100); til: imagejpeg($dst_im,"Navn_paa_cropped_fil.jpg", 100);
Synes godt om
Slettet bruger
27. januar 2006 - 14:18#8
Super. Det prøver jeg lige at se om jeg kan få til at fungere her i weekenden...Ellers vender jeg frygteligt tilbage ;-) Tak for hjælpen indtil videre ihvertfald....
Synes godt om
Slettet bruger
27. januar 2006 - 16:59#9
Hej igen Har nu prøvet med følgende kode : (Billedet uploades fra en admin-del, koden er sat ind på denne upload-side)
function LoadJpeg($file) /* det script der danner det "normale" billede hedder $file */ { $im = @imagecreatefromjpeg($file); /* Attempt to open */ if (!$im) { /* See if it failed */ $im = imagecreate(500, 30); /* Create a blank image */ $bgc = imagecolorallocate($im, 255, 255, 255); $tc = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 150, 30, $bgc); /* Output an errmsg */ imagestring($im, 1, 5, 5, "Error loading $file", $tc); } return $im; } $src_im = LoadJpeg($_GET['url']); $dst_im = @imagecreatetruecolor(100, 100) or die("Cannot Initialize new GD image stream"); imagecopyresampled($dst_im, $src_im, 0, 0, 100, 0, 100, 100, 200, 200 ); imagejpeg($dst_im,"../nyheder/$filnavn", 100); //imagejpeg($src_im,null, 100); imagedestroy($dst_im); imagedestroy($src_im); }
...og derefter : mysql_query("UPDATE tabel_billeder SET crop='$filnavn' where id='$idfelt'");
...Billedet bliver godt nok 100x100 pixels når jeg henter det på en anden side, til gengæld bliver det helt hvidt? Kan du gennemskue hvorfor?
Hvor stor er de billede du cropper? Og kan jeg se hele koden du bruger?
Synes godt om
Slettet bruger
28. januar 2006 - 13:01#11
Jeg uploader et billede fra digi-cam og kører det gennem følgende kode, som genererer et stort billede (men mindre end det fra digicam, selvfølgelig) og som jeg gerne vil have til at genere en thumbnail der er kvadratisk, således at når denne thumbnail vises på den tilhørende hjemmeside, så er det ligegyldigt om billedet er lagt ind i høj- eller bredformat (af hensyn til designet). Det kræver selvfølgelig, at thumbanilen genereres i bredformat og derefter croppes (f.eks. i center af billedet så man får mest muligt med af motivet). Jeg håber du kan følge hvor jeg vil hen?! Mit problem med koden her er, at jeg ikke kan gennemskue, om billedet croppes efter det hentes fra databasen i bredformat f.eks. på selve hjemmesiden eller om det skal croppes i forbindelse med upload til databasen...
if (!empty($_POST['upload'])) { $filnavn = date ("U"); // Jeg bruger unix timestamp som filnavn da det er den nemmeste måde at lave et unikt navn. $filnavn = "$filnavn.jpg"; // Bare så man er fri for at sætte .jpg senere. $fil = date ("U"); // Jeg bruger unix timestamp som filnavn da det er den nemmeste måde at lave et unikt navn. $fil = "$fil.jpg"; // Bare så man er fri for at sætte .jpg senere. if($file_type == "image/jpeg" || $file_type == "image/jpg" || $file_type == "image/pjpeg"){ //Checker for JPG } else { ?> Det valgte billede er ikke JPG-format ! <?php exit; } Billedet uploades til serveren! Vent venligst... <?php $size = Getimagesize($file); //Henter pixel størelse af billed. if($size[0] > $size[1]){ //Checker for Tværformat / Højformat. $new_width = ("150"); //sætter min ønsket brede på billedet. $new_width2 = ("420"); //sætter min ønsket brede på billedet. $new_height = ($new_width/$size[0])*$size[1]; // Regner højden ud så jeg ikke får et distorted billed. $new_height2 = ($new_width2/$size[0])*$size[1]; // Regner højden ud så jeg ikke får et distorted billed. $src_img = imagecreatefromjpeg("$file"); //GD starter med at generer billedt. $dst_img = imagecreatetruecolor($new_width,$new_height); imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]); touch("../nyheder/L$fil"); //bug-fix imagejpeg($dst_img, "../nyheder/L$fil", 70); // Placere mit billed og sætter kvalitet (,70) = 0-100. imagedestroy($src_img); imagedestroy($dst_img);
Damn, det var meget kode! (er ikke god til at sætte mig og læse så meget kode igennem) Prøv at lav noget debug. F.eks. echo "Nu er vi her..."; if(funktion()) echo "Funktion: resize() gik godt...";
osv... Så kan du måske selv finde frem til fejlen!
Synes godt om
Slettet bruger
29. januar 2006 - 20:34#13
Jeg har fået det til at virke nu :-) Tusind tak for hjælpen.. Mvh Jesper PS : Håber jeg kan finde ud af det med at give point nu?!
Synes godt om
Slettet bruger
29. januar 2006 - 20:36#14
Nå, det kunne jeg ikke...Åndssvagt og meget lidt brugervenligt system. Hvordan sørger jeg for at du får dine point, ved du det?
Så skal du oprette et spørgsmål hvor du sætter de point du synes jeg skal have! Og så laver du en ref hertil: http://www.eksperten.dk/spm/682931 Så er det ok!
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.