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

En deze is via het GD library resized

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)
Is er nog een manier om de kwaliteit te verbeteren of is dit het maximale wat eruit te halen valt?
Om een voorbeeld te geven, hier is een plaatje resized via photoshop

En deze is via het GD library resized

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 ]