Avatar billede princewhite Nybegynder
17. december 2005 - 13:12 Der er 20 kommentarer og
2 løsninger

Image resize

Hejsa,

Er der nogen der ligger inde med lidt kode der virker til image resize? Billedet skal vises i en table men tages fra en eksterne adresse, men savner en måde at kunne sikre mig det ikke bliver større end de angivet værdier da det ellers bryder TDen, har forsøgt med et par stykker fra php.net men uden held.

Takker
Avatar billede jakobdo Ekspert
17. december 2005 - 13:16 #1
function resize( $filename, $newfilename, $maxw, $maxh )
{
    $result = false;
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    $result = imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return $result;
}
Avatar billede princewhite Nybegynder
17. december 2005 - 13:22 #2
takker, den må jeg nok lige lege lidt med, for den gjorde mig ikke meget klogere, skal lige siges jeg ikke er den største ørn :D
Avatar billede jakobdo Ekspert
17. december 2005 - 13:35 #3
En dum (men let løsning) kunne være:
<img src="http://www.blabla.dk/picture.jpg" width="300px" height="200px">
Avatar billede princewhite Nybegynder
17. december 2005 - 13:36 #4
jeps det tænkte jeg også først, men det er et problem hvis billederne er meget mindre end det for så bliver de ekstremt pixeleret :)
Avatar billede princewhite Nybegynder
17. december 2005 - 13:37 #5
Du skulle ved tilfælde et ikke have et helt eksempel liggen på den funktion hvordan den bruges vel? :)
Avatar billede jakobdo Ekspert
17. december 2005 - 13:39 #6
Det kommer helt an på i hvilken sammenhæng du vil bruge koden!
Prøv at vis mig et par af dine linier kode omkring <img> tagget hvor du vil have koden!
Avatar billede princewhite Nybegynder
17. december 2005 - 13:42 #7
Der har jeg blot denne

<img src="<?php echo $pic; ?>"></img>
Avatar billede jakobdo Ekspert
17. december 2005 - 13:56 #8
Du kunne bruge noget i denne stil:

<?php
//http://www.exp.dk/spm/672864

function LoadJpeg($imgname)
{
    $im = @imagecreatefromjpeg($imgname); /* Attempt to open */
    if (!$im)
    {
        /* See if it failed */
        $im  = imagecreate(150, 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 $imgname", $tc);
    }
    return $im;
}

$file = $_GET['file'];
$maxw = 100;
$maxh  = 100;

header("Content-type: image/jpeg");
$srcim = LoadJpeg($file);
$ow = imagesx( $srcim );
$oh = imagesy( $srcim );
$wscale = $maxw / $ow;
$hscale = $maxh / $oh;
$scale = ( $hscale < $wscale ? $hscale : $wscale );
$nw = round( $ow * $scale, 0 );
$nh = round( $oh * $scale, 0 );
$dstim = imagecreatetruecolor( $nw, $nh );
imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
imagejpeg( $dstim );
imagedestroy( $dstim );
imagedestroy( $srcim );

?>

Du kan se koden i aktion på siden:
http://www.codebreaker.dk/exp/672864.php?file=(et fuldt link til et jpg/jpeg billede)
Avatar billede princewhite Nybegynder
17. december 2005 - 14:15 #9
hejsa, tak for det, tror det er mere kompliceret end jeg kan klare desværre, men det spørgsmål du henviser til er det et der relatere til det her og i så fald er det så et forkert link?
Avatar billede jakobdo Ekspert
17. december 2005 - 14:21 #10
Hvis du smider det kode der i en php fil, og kalder den:
pic.php
så kan du lave dit link som:
echo "<img src=\"pic.php?file=".$pic."\" />\n";
Avatar billede princewhite Nybegynder
17. december 2005 - 14:39 #11
takker, men den giver bare en lang række fejl :) kan heller ikke få dit link til at virke?
Avatar billede jakobdo Ekspert
17. december 2005 - 14:47 #12
Avatar billede princewhite Nybegynder
17. december 2005 - 14:53 #13
ahhh :) tror jeg har luret det, det skal være jpg ikke?
Avatar billede jakobdo Ekspert
17. december 2005 - 14:53 #14
Jo, jpeg eller jpg!
Avatar billede princewhite Nybegynder
17. december 2005 - 15:29 #15
leger lidt videre, men idntil videre siger den blot

ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀd"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?õÝWÅI¤ëÂÂkt0 apòùãÌä° ‘csŸ“'á™'ñm…²\´ö÷±‹y97C¼¢¹\ôÈVù<.ãÅoQ@ôÝJRݧ‚9’0ÅA–2»°pHõ~„…mã­:kîÈÐù¥mÜJ¹ß³ ÜgŸâ (îEu4P)oãÍ>êWò¡u€EYfuMÆáÙGÊNF6þ9Èù~j·cã ;P¸Óá‚+½×Ī‡hCåy 6OtÁã8ÈÎ+ ¨Úžd™¢F–0U¨, ã ÙÀü…IEPEPEPEPEPEPEPEPEPEPEP
Avatar billede princewhite Nybegynder
17. december 2005 - 15:46 #16
Mystik, hvis jeg mauelt sætter linjen i en browser ligesom det link du har postet så virker det, men hvis det er via echo så laver den error loading
Avatar billede princewhite Nybegynder
17. december 2005 - 15:55 #17
og så spiller det.. suk.. lig et svar og der er point takker :)
Avatar billede jakobdo Ekspert
17. december 2005 - 18:25 #18
Avatar billede princewhite Nybegynder
19. december 2005 - 17:10 #19
Jeps, har fået det til at køre, og du skal naturligvis have point :) bare smid et svar :) p.s. er det muligt at den tager et default image hvis der ikke indtastes en streg før formen eksekveres?
Avatar billede jakobdo Ekspert
19. december 2005 - 18:27 #20
Ja, der vil funktionen LOADJPEG fejle og skrive: Error loading $imgname
Avatar billede jakobdo Ekspert
19. december 2005 - 18:27 #21
Og det er denne kode som skal rettes:

/* See if it failed */
        $im  = imagecreate(150, 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 $imgname", $tc);

Og et svar!
Avatar billede jakobdo Ekspert
19. december 2005 - 19:52 #22
Takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester