login  Naam:   Wachtwoord: 
Registreer je!
 Forum

GD: afbeelding kleuren zijn slecht (Opgelost)

Offline Raze - 04/07/2010 22:26
Avatar van RazePHP beginner Hallo,

ik heb een code gemaakt om een afbeelding te uploaden en dan te resizen. alles werkt (de code is lang en aangezien ze werkt post ik ze niet), maar de nieuwe geresizede afbeelding heeft zwakke kleuren (echt slechte kwaliteit).

Is hier iets aan te doen? Ik heb dit al geprobeerd:
  1. imagejpeg( $new_thumb , $thumb_savePath , 120 );


dus de kwaliteit op 120 gezet, maar het verschil is nauwelijks beter met een die bv op 80 staat.

5 antwoorden

Gesponsorde links
Offline ProjectWebdesign - 04/07/2010 22:29
Avatar van ProjectWebdesign Lid Kijk eens naar dit script, want ik weet nu niet precies welke stappen je doet.
Misschien vergeet je er wel een.

  1. <?php
  2. if($_GET['image'] && $_GET['width'])
  3. { // het is niet handig om de grootte mee te geven maar voor test doeleinden wel
  4. //Waar komt het bestand vandaan?
  5. $bronvanhetbestand = "upload/". $_GET['image'];
  6.  
  7. //De hoogte en breedte ophalen van het plaatje
  8. $dimensions = getimagesize($bronvanhetbestand);
  9.  
  10. //Dit is de breedte die alle plaatjes krijgen
  11. $doelbreedte = $_GET['width'];
  12.  
  13. //Hoogte en breedte toekennnen aan nieuwe variabelen
  14. $bronbreedte = $dimensions[0];
  15. $bronhoogte = $dimensions[1];
  16.  
  17. //De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
  18. $doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
  19.  
  20. //De hoogte, als het nodig is, afronden
  21. $doelhoogte = round($doelhoogte, 0);
  22.  
  23. //Zeggen dat dit bestand een plaatje is
  24. header('content-type: image/jpeg');
  25.  
  26. //Het plaatje inlezen in de variabele $image
  27. $image = imagecreatefromjpeg($bronvanhetbestand);
  28.  
  29. //een nieuw klein plaatje maken met de gewenste grootte
  30. $destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
  31.  
  32. //Het nieuwe plaatje vullen met verkleinde plaatje
  33. imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
  34.  
  35. //Het plaatje weergeven
  36. imagejpeg($destination);
  37.  
  38. //Het bronplaatje verwijderen
  39. imagedestroy($image);
  40.  
  41. //Het doelplaatje verwijderen
  42. imagedestroy($destination);
  43. }
  44. else
  45. {
  46. echo "Er is geen plaatje meegegeven";
  47. }
  48. ?>
Offline Raze - 04/07/2010 22:33
Avatar van Raze PHP beginner nee ik doe ze allemaal, anders zou het niet werken...

ik heb zo een vermoeden dat het komt wanneer ik heel grote afbeeldingen resize, want kleine afbeeldingen (het script resized enkel als ze > 200px breedte zijn), die bv <200px zijn, of 300px (zodat er maar weinig geresized moet worden), die blijven wel goed qua kleur.
Offline ProjectWebdesign - 04/07/2010 22:36
Avatar van ProjectWebdesign Lid Gebruik anders een PHP class daarvoor.
Dit is een goede: http://wideimage.sourceforge.net/
Offline Maarten - 05/07/2010 14:29
Avatar van Maarten Erelid Wat ik meestal ondervonden heb:
- imagecopyresampled gebruikten, anders is de verkleining amper scherp
- ipv imagecreate imagecreatetruecolorgebruiken, anders trekt het kleur op niks 

Jouw probleem zal dus wss n° 2 zijn.
Bedankt door: Raze
Offline Raze - 05/07/2010 16:20
Avatar van Raze PHP beginner Dankjewel, maarten, dat was de juiste oplossing 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s