[PHP] Plaatje resizen via GD library

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • plakbandrol
  • Registratie: Juni 2002
  • Laatst online: 16-09 09:35
Ik ben een site aan het ontwikkelen waarbij de beheerders zelf plaatjes kunnen uploaden, het gaat om plaatjes van producten die men maakt. Het resizen laat ik automatisch verlopen via het GD library van PHP. Ik heb speciaal geupgrade naar versie 2.0 zodat ik fatsoenlijke kwaliteit heb, toch krijg ik de kwaliteit van de plaatjes niet goed..

Om een voorbeeld te geven, hier is een plaatje resized via photoshop

Afbeeldingslocatie: http://4aal.nl/temp/manual.jpg

En deze is via het GD library resized

Afbeeldingslocatie: http://4aal.nl/temp/gd.jpg

Ik krijg dus de kwaliteit niet beter dan dit, en volgens mij zou dat wel moeten kunnen.. De functie die ik nu gebruik is de volgende (afkomstig van php.net)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function createthumb($image_source,$thumb_x,$thumb_y,$output_file){
  $backup_file = $output_file . "_backup.jpg";
  copy($image_source,$backup_file);
  $image_properties = getimagesize($backup_file);
  if (!$image_properties[2] == 2) {
    return(0);
  } else {
    $src_image = imagecreatefromjpeg($backup_file);
    $src_x = imagesx($src_image);
    $src_y = imagesy($src_image);
    if (($thumb_y == "0") && ($thumb_x == "0")) {
      return(0);
    } elseif ($thumb_y == "0") {
      $scalex = $thumb_x/($src_x-1);
      $thumb_y = $src_y*$scalex;
    } elseif ($thumb_x == "0") {
      $scaley = $thumb_y/($src_y-1);
      $thumb_x = $src_x*$scaley;
    }
    $thumb_x = (int)($thumb_x);
    $thumb_y = (int)($thumb_y);
    $dest_image = imagecreatetruecolor($thumb_x, $thumb_y);
    unlink($backup_file);
    if (!imagecopyresized($dest_image, 
$src_image, 0, 0, 0, 0, $thumb_x, $thumb_y, $src_x, $src_y)) {
      imagedestroy($src_image);
      imagedestroy($dest_image);
      return(0);
    } else {
      imagedestroy($src_image);
      if (imagejpeg($dest_image,$output_file,"100")) {
        imagedestroy($dest_image);
        return(1);
      }
      imagedestroy($dest_image);
    }
    return(0);
  }

}


Is er nog een manier om de kwaliteit te verbeteren of is dit het maximale wat eruit te halen valt?

[ Voor 3% gewijzigd door plakbandrol op 05-05-2004 10:53 ]


Acties:
  • 0 Henk 'm!

  • JoeKurr
  • Registratie: Juli 2001
  • Laatst online: 11-06 14:06

JoeKurr

Past niet in een MiG-21

Probeer eens in plaats van ImageCopyResized de functie ImageCopyResampled.
Die geeft een beter resultaat

Dutch Flanker Display Team
You can't be lost if you don't care where you are


Acties:
  • 0 Henk 'm!

  • plakbandrol
  • Registratie: Juni 2002
  • Laatst online: 16-09 09:35
JoeKurr schreef op 05 mei 2004 @ 11:00:
Probeer eens in plaats van ImageCopyResized de functie ImageCopyResampled.
Die geeft een beter resultaat
Ah dat scheelt al enorm _/-\o_

photoshop

Afbeeldingslocatie: http://4aal.nl/temp/manual.jpg

GD eerst

Afbeeldingslocatie: http://4aal.nl/temp/gd.jpg

GD nu

Afbeeldingslocatie: http://4aal.nl/temp/gdnu.jpg

[ Voor 26% gewijzigd door plakbandrol op 05-05-2004 11:32 ]


Acties:
  • 0 Henk 'm!

  • satyriasis
  • Registratie: Januari 2000
  • Laatst online: 19-09 14:37
en als je nog ff w8 op php 5 dan heb je de functie imageantialias tot je beschikking. hij zit er nu wel in maar werkt zelden tot niet