Avatar billede lasse-p3 Nybegynder
02. januar 2008 - 15:09 Der er 15 kommentarer og
1 løsning

GD Lib: dårlig billedekvalitet?

Sidder som Flickr og Istockphoto har scripts der er enormt gode til at generere thumbnails. Min opfattelse er at GD Lib generere thmbnails i dårlig kvalitet - er dette rigtigt eller er det mig der gør noget forkert?
Avatar billede coderdk Praktikant
02. januar 2008 - 15:35 #1
Du bruger imagecopyresampled? GD-lib er ikke specielt god til det...
Avatar billede lasse-p3 Nybegynder
02. januar 2008 - 15:37 #2
Jeg har brugt den fnktion hvor man resizer. Hvad kan man ellers bruge en gd lib der giver kvali-thumbs?
Avatar billede coderdk Praktikant
02. januar 2008 - 15:42 #3
Der er flere funktioner der resizer, du skal bruge imagecopyresampled ;)
Avatar billede lasse-p3 Nybegynder
02. januar 2008 - 15:46 #4
Er imagecopyresampled noget værd?
Avatar billede coderdk Praktikant
02. januar 2008 - 15:48 #5
Tjah, den er da bedre end imagecopyresized ;)
Avatar billede dmcn Praktikant
02. januar 2008 - 17:07 #6
Alternativt har en del udbydere efterhånden fået øjnene op for imagemagick, et konsol-baseret program, som bl.a. kan bruges til at resize billeder.
Avatar billede whatever Nybegynder
02. januar 2008 - 19:48 #7
Hvordan ser dit script ud?
Avatar billede martinbk Nybegynder
03. januar 2008 - 01:05 #8
function resizeImage($src_file, $dest_file, $newWidth)
{
$imginfo = @getimagesize($src_file);
if ($imginfo == NULL)
  return false;

// height/width
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];

$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = 0;
$destWidth = $newWidth;
$destHeight = $srcHeight / $ratioWidth;
$src_img = imagecreatefromjpeg($src_file);
$dst_img = imagecreatetruecolor($destWidth,$destHeight);
ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth,(int)$destHeight, $srcWidth, $srcHeight);
imagejpeg($dst_img, $dest_file, 100);
imagedestroy($src_img);
imagedestroy($dst_img);
return $dest_file;
});

det er ikke superkvalitet, men det virker bestemt
Avatar billede lasse-p3 Nybegynder
03. januar 2008 - 16:02 #9
cool, smider du et svar martinbk?
Avatar billede martinbk Nybegynder
03. januar 2008 - 16:47 #10
kommer her
Avatar billede lasse-p3 Nybegynder
04. januar 2008 - 17:46 #11
Der kommer en fejl når jeg loader denne i browseren?

<?
function resizeImage($src_file, $dest_file, $newWidth)
{
$imginfo = @getimagesize($src_file);
if ($imginfo == NULL)
  return false;

// height/width
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];

$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = 0;
$destWidth = $newWidth;
$destHeight = $srcHeight / $ratioWidth;
$src_img = imagecreatefromjpeg($src_file);
$dst_img = imagecreatetruecolor($destWidth,$destHeight);
ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth,(int)$destHeight, $srcWidth, $srcHeight);
imagejpeg($dst_img, $dest_file, 100);
imagedestroy($src_img);
imagedestroy($dst_img);
return $dest_file;
});
resizeImage("Images/7.jpg,Images/7-5.jpg,20");
?>
Avatar billede coderdk Praktikant
04. januar 2008 - 17:52 #12
resizeImage("Images/7.jpg,Images/7-5.jpg,20");

skal vel være

resizeImage("Images/7.jpg","Images/7-5.jpg",20);
Avatar billede lasse-p3 Nybegynder
04. januar 2008 - 17:59 #13
Hej coderdk, jeg får følgende fejl: Parse error: syntax error, unexpected ')' in /web/www/frac/users/j/jimages/try.php on line 23
Avatar billede coderdk Praktikant
04. januar 2008 - 18:07 #14
});

skal sikkert være

}
Avatar billede lasse-p3 Nybegynder
04. januar 2008 - 18:31 #15
Yeah det virker. Hvordan skriver jeg ind i scriptet at den længste side skal forkortes til 350 px. Altså hvordan kan jeg få scriptet til automatisk at gøre den længste sidde - enten længden eller bredden - til 350 px? Er det ikke noget med hvis x er større end y så eller? Nogen der kan give et eksempel? Jeg smider lige nogle flere points ind
Avatar billede coderdk Praktikant
04. januar 2008 - 19:52 #16
Orker ikke at rette, brug denne i stedet:

    function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $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 );
        imagejpeg( $dstim, $newfilename, 85 );
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

Kaldes med:

    resize( "Images/7.jpg","Images/7-5.jpg", 350, 350 );
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