simenss Skrevet 13. mai 2004 Del Skrevet 13. mai 2004 (endret) Jeg bruker et script for å hente bilder å endre størrelsen (resize.php). Men når jeg skal legge til tekst på bildet med siden (tekst-bilde.php) går det ikke med: $image = imagecreatefromjpeg("resize.php?id=555480&w=128&h=128&type=bakgrunn"); Har også prøvd å legge inn alle veriablene i selve tekst-bilde.php så det kun blir: $image = imagecreatefromjpeg("resize.php"); men det går fortsatt ikke. Finner heller ikke noe om dette på php.net. Noen som vet en løsning? Endret 13. mai 2004 av simenss Lenke til kommentar
LoS Skrevet 13. mai 2004 Del Skrevet 13. mai 2004 imagecreatefromjpeg(); krever jo at det er en jpeg/jpg fil som står innenfor (); Derfor vil php prøve å lage ett jpg bilde av en php fil, noe som jeg er ganske sikker på at ikke vil funke. Lenke til kommentar
simenss Skrevet 13. mai 2004 Forfatter Del Skrevet 13. mai 2004 Går det ann å slå sammen disse scriptene på noen måter da? Så tekst-bilde.php setter tekst på bildet, og endrer størrelsen som resize.php. tekst-bilde.php: <?php header("Content-type: image/jpeg"); $text = $_GET['text']; $color = $_GET['color']; $font1 = $_GET['font']; $font = "../font-bin/$font1.TTF"; $angle = 0; function fixbbox($bbox) { $xcorr=0-$bbox[6]; //northwest X $ycorr=0-$bbox[7]; //northwest Y $tmp_bbox['left']=$bbox[6]+$xcorr; $tmp_bbox['top']=$bbox[7]+$ycorr; $tmp_bbox['width']=$bbox[2]+$xcorr; $tmp_bbox['height']=$bbox[3]+$ycorr; return $tmp_bbox; } $bredde = 110; // angi bredden på bildet while($størrelse != true){ $i++; $bildet = fixbbox(imagettfbbox($i,0,$font,$text)); if($bildet['width'] > $bredde) { $størrelse = true; $i--; } } // Create an image and fill the background with lightgray $image = imagecreatefromjpeg("resize.php?image=242705.jpg&w=128&h=128"); //imagefill($image, 0, 0, hexdec("dddddd")); // Run a fixed version of imagettfbbox() $bbox = imagettfbbox_fixed($i, $angle, $font, $text); // Make some text and center the text on the image. // imagettftext() pivot is on lower left imagettftext($image, $i, $angle, imagesx($image) / 1.7 - $bbox['width'] / 1.7, imagesy($image) / 2 + $bbox['height'] / 2, hexdec("#$shadow"), $font, $text); imagettftext($image, $i, $angle, imagesx($image) / 2 - $bbox['width'] / 2, imagesy($image) / 2 + $bbox['height'] / 2, hexdec("#$color"), $font, $text); // Show the image imagejpeg($image); function imagettfbbox_fixed($i, $angle, $font, $text) { // Get the boundingbox from imagettfbbox(), which is correct when angle is 0 $bbox = imagettfbbox($i, 0, $font, $text); // Rotate the boundingbox $angle = pi() * 2 - $angle * pi() * 2 / 360; for ($i=0; $i<4; $i++) { $x = $bbox[$i * 2]; $y = $bbox[$i * 2 + 1]; $bbox[$i * 2] = cos($angle) * $x - sin($angle) * $y; $bbox[$i * 2 + 1] = sin($angle) * $x + cos($angle) * $y; } // Variables which tells the correct width and height $bbox['width'] = $bbox[0] + $bbox[4]; $bbox['height'] = $bbox[1] - $bbox[5]; return $bbox; } ?> resize.php: <?php $w = $_GET['w']; $h = $_GET['h']; $proportional = TRUE; $image = $_GET['image']; function sizeImage($image, $w, $h, $proportional) { if (!$attr = getimagesize($image)) { trigger_error("GD: Image does not exist. Must be gif, jpeg, or png!",E_USER_ERROR); } switch ($attr[2]) { case 1: $image = imagecreatefromgif($image); break; case 2: $image = imagecreatefromjpeg($image); break; case 3: $image = imagecreatefrompng($image); break; default: header("Content-type: text/html"); trigger_error("GD: Image type wrong. Must be gif, jpeg, or png!",E_USER_ERROR); } if ($proportional) { if ($attr[0]<$attr[1]){ $w = $h * ($attr[0]/$attr[1]); } else{ $h = $w / ($attr[0]/$attr[1]); } } $newimage = imagecreatetruecolor($w,$h); imagecopyresampled($newimage, $image, 0, 0, 0, 0, $w, $h, $attr[0], $attr[1]); imagejpeg($newimage); imagedestroy($image); imagedestroy($newimage); } sizeImage($image, $w, $h, $proportional); ?> Lenke til kommentar
???????? Skrevet 13. mai 2004 Del Skrevet 13. mai 2004 Sett inn resize.php der du har $image = imagecreatefromjpeg("resize.php?image=242705.jpg&w=128&h=128"); Husk da å bruke $newimage og ikke $image senere i scriptet. Variablene image=242705.jpg&w=128&h=128 må du definere i scriptet siden det nå blir samme fil. Lenke til kommentar
simenss Skrevet 13. mai 2004 Forfatter Del Skrevet 13. mai 2004 Sett inn resize.php der du har $image = imagecreatefromjpeg("resize.php?image=242705.jpg&w=128&h=128"); Husk da å bruke $newimage og ikke $image senere i scriptet. Variablene image=242705.jpg&w=128&h=128 må du definere i scriptet siden det nå blir samme fil. Den klarer nå å endre størrelsen, men den legger ikke til teksten. Har prøvd å endre flere ting, men får det ikke helt til. Koden ser nå slik ut: <?php header("Content-type: image/jpeg"); // Hvis ttext er null if($_GET['text']==NULL) { $text = "MMS-uploader.com"; } else { $text = $_GET['text']; } // Hvis color er null if($_GET['color']==NULL) { $color = "000000"; } else { $color = $_GET['color']; } // Hvis shadow er null if($_GET['shadow']==NULL && $_GET['color']==NULL) { $shadow = "FFFFFF"; } elseif($_GET['shadow']==NULL && $_GET['color']!==NULL) { $shadow = NULL; } else { $shadow = $_GET['shadow']; } // Hvis font er null if($_GET['font']==NULL) { $font = "../font-bin/Arial.TTF"; } else { $font = $_GET['font']; $font = "../font-bin/$font.TTF"; } // Hvis color er null og farge er svart $angle = 0; function fixbbox($bbox) { $xcorr=0-$bbox[6]; //northwest X $ycorr=0-$bbox[7]; //northwest Y $tmp_bbox['left']=$bbox[6]+$xcorr; $tmp_bbox['top']=$bbox[7]+$ycorr; $tmp_bbox['width']=$bbox[2]+$xcorr; $tmp_bbox['height']=$bbox[3]+$ycorr; return $tmp_bbox; } $bredde = 110; // angi bredden på bildet while($størrelse != true){ $i++; $bildet = fixbbox(imagettfbbox($i,0,$font,$text)); if($bildet['width'] > $bredde) { $størrelse = true; $i--; } } // resize.php START $w = 128; $h = 128; $proportional = TRUE; $image = "999535.jpg"; function sizeImage($image, $w, $h, $proportional) { if (!$attr = getimagesize($image)) { trigger_error("GD: Image does not exist. Must be gif, jpeg, or png!",E_USER_ERROR); } switch ($attr[2]) { case 1: $image = imagecreatefromgif($image); break; case 2: $image = imagecreatefromjpeg($image); break; case 3: $image = imagecreatefrompng($image); break; default: header("Content-type: text/html"); trigger_error("GD: Image type wrong. Must be gif, jpeg, or png!",E_USER_ERROR); } if ($proportional) { if ($attr[0]<$attr[1]){ $w = $h * ($attr[0]/$attr[1]); } else{ $h = $w / ($attr[0]/$attr[1]); } } $newimage = imagecreatetruecolor($w,$h); imagecopyresampled($newimage, $image, 0, 0, 0, 0, $w, $h, $attr[0], $attr[1]); imagejpeg($newimage); imagedestroy($image); imagedestroy($newimage); } sizeImage($image, $w, $h, $proportional); // rezize.php SLUTT // Run a fixed version of imagettfbbox() $bbox = imagettfbbox_fixed($i, $angle, $font, $text); // Make some text and center the text on the image. // imagettftext() pivot is on lower left // Skygge imagettftext($newimage, $i, $angle, imagesx($newimage) / 1.7 - $bbox['width'] / 1.7, imagesy($newimage) / 2 + $bbox['height'] / 2, hexdec("#$shadow"), $font, $text); // Tekst imagettftext($newimage, $i, $angle, imagesx($newimage) / 2 - $bbox['width'] / 2, imagesy($newimage) / 2 + $bbox['height'] / 2, hexdec("#$color"), $font, $text); // Show the image imagejpeg($newimage); function imagettfbbox_fixed($i, $angle, $font, $text) { // Get the boundingbox from imagettfbbox(), which is correct when angle is 0 $bbox = imagettfbbox($i, 0, $font, $text); // Rotate the boundingbox $angle = pi() * 2 - $angle * pi() * 2 / 360; for ($i=0; $i<4; $i++) { $x = $bbox[$i * 2]; $y = $bbox[$i * 2 + 1]; $bbox[$i * 2] = cos($angle) * $x - sin($angle) * $y; $bbox[$i * 2 + 1] = sin($angle) * $x + cos($angle) * $y; } // Variables which tells the correct width and height $bbox['width'] = $bbox[0] + $bbox[4]; $bbox['height'] = $bbox[1] - $bbox[5]; return $bbox; } ?> Har lagt merke til at det står imagejpeg($newimage); to steder i scriptet, men det fungererer heller ikke når jeg fjerner en av disse. Lenke til kommentar
???????? Skrevet 14. mai 2004 Del Skrevet 14. mai 2004 (endret) Dude, du skal ikke skrive bildet i funksjonen som endrer størrelsen, og i alle fall ikke ødlegge det der. Her er en som funker Ta en kikk på endringene: header("Content-type: image/jpeg"); // Hvis ttext er null if($_GET['text']==NULL) { $text = "MMS-uploader.com"; } else { $text = $_GET['text']; } // Hvis color er null if($_GET['color']==NULL) { $color = "000000"; } else { $color = $_GET['color']; } // Hvis shadow er null if($_GET['shadow']==NULL && $_GET['color']==NULL) { $shadow = "FFFFFF"; } elseif($_GET['shadow']==NULL && $_GET['color']!==NULL) { $shadow = NULL; } else { $shadow = $_GET['shadow']; } // Hvis font er null if($_GET['font']==NULL) { $font = "arial.ttf"; } else { $font = $_GET['font']; $font = "arial.ttf"; } // Hvis color er null og farge er svart $angle = 0; function fixbbox($bbox) { $xcorr=0-$bbox[6]; //northwest X $ycorr=0-$bbox[7]; //northwest Y $tmp_bbox['left']=$bbox[6]+$xcorr; $tmp_bbox['top']=$bbox[7]+$ycorr; $tmp_bbox['width']=$bbox[2]+$xcorr; $tmp_bbox['height']=$bbox[3]+$ycorr; return $tmp_bbox; } $bredde = 110; // angi bredden på bildet while($størrelse != true){ $i++; $bildet = fixbbox(imagettfbbox($i,0,$font,$text)); if($bildet['width'] > $bredde) { $størrelse = true; $i--; } } // resize.php START $w = 128; $h = 128; $proportional = TRUE; $image = "bg.jpg"; function sizeImage($image, $w, $h, $proportional) { if (!$attr = getimagesize($image)) { trigger_error("GD: Image does not exist. Must be gif, jpeg, or png!",E_USER_ERROR); } switch ($attr[2]) { case 1: $image = imagecreatefromgif($image); break; case 2: $image = imagecreatefromjpeg($image); break; case 3: $image = imagecreatefrompng($image); break; default: header("Content-type: text/html"); trigger_error("GD: Image type wrong. Must be gif, jpeg, or png!",E_USER_ERROR); } if ($proportional) { if ($attr[0]<$attr[1]){ $w = $h * ($attr[0]/$attr[1]); } else{ $h = $w / ($attr[0]/$attr[1]); } } $newimage = imagecreatetruecolor($w,$h); imagecopyresampled($newimage, $image, 0, 0, 0, 0, $w, $h, $attr[0], $attr[1]); //imagejpeg($newimage); imagedestroy($image); //imagedestroy($newimage); return $newimage; } $newimage = sizeImage($image, $w, $h, $proportional); // rezize.php SLUTT // Run a fixed version of imagettfbbox() $bbox = imagettfbbox_fixed($i, $angle, $font, $text); // Make some text and center the text on the image. // imagettftext() pivot is on lower left // Skygge imagettftext($newimage, $i, $angle, imagesx($newimage) / 1.7 - $bbox['width'] / 1.7, imagesy($newimage) / 2 + $bbox['height'] / 2, hexdec("#$shadow"), $font, $text); // Tekst imagettftext($newimage, $i, $angle, imagesx($newimage) / 2 - $bbox['width'] / 2, imagesy($newimage) / 2 + $bbox['height'] / 2, hexdec("#$color"), $font, $text); // Show the image imagejpeg($newimage); function imagettfbbox_fixed($i, $angle, $font, $text) { // Get the boundingbox from imagettfbbox(), which is correct when angle is 0 $bbox = imagettfbbox($i, 0, $font, $text); // Rotate the boundingbox $angle = pi() * 2 - $angle * pi() * 2 / 360; for ($i=0; $i<4; $i++) { $x = $bbox[$i * 2]; $y = $bbox[$i * 2 + 1]; $bbox[$i * 2] = cos($angle) * $x - sin($angle) * $y; $bbox[$i * 2 + 1] = sin($angle) * $x + cos($angle) * $y; } // Variables which tells the correct width and height $bbox['width'] = $bbox[0] + $bbox[4]; $bbox['height'] = $bbox[1] - $bbox[5]; return $bbox; } imagejpeg($newimage); imagedestroy($newimage); EDIT: du må selv endre bildet og fonten igjen! Jeg har ikke sett noe på selve scripet ditt, men det skan effektiviserers Lykke til Endret 14. mai 2004 av ???????? Lenke til kommentar
simenss Skrevet 15. mai 2004 Forfatter Del Skrevet 15. mai 2004 Dude, du skal ikke skrive bildet i funksjonen som endrer størrelsen, og i alle fall ikke ødlegge det der. Her er en som funker Ta en kikk på endringene: Tusen takk, nok en gang ????????! Du er en knupp Selv jeg med mine PHP-kunnskaper burde vel ha skjønt problemet med en gang, men men.. Man lærer jo så lenge man lever! 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å