[php] uploaded file resizen -> zwarte afbeelding?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik deze code om mijn afbeelding die ik binnenhaal met een post te resizen naar een kwart en in het mapje /files/thumb/ neer te zetten(althans dat probeer ik):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Hiervoor wordt de originele afbeelding al neergezet in het mapje /files/

$filename= "/files/" . $_FILES['userfile']['name']; 
$imageInfo = getimagesize($filename); 

$src_img = imagecreatefromjpeg($filename);
$dst_img = imagecreatetruecolor($imageInfo[0],$imageInfo[1]); 
imagecopyresampled(
$dst_img, 
$src_img, 
0, 0, 0, 0, 
$imageInfo[0] / 2, 
$imageInfo[1] / 2, 
$imageInfo[0], 
$imageInfo[1]
);
imagejpeg($dst_img, "/files/thumb/" . $_FILES['userfile']['name'], $quality); 
imagedestroy($src_img); 
imagedestroy($dst_img);


en het resultaat is momenteel dit:

Afbeeldingslocatie: http://www.streamingmediadesign.nl/upload2/paardklein_res.jpg

Waar het origineel dit is::

Afbeeldingslocatie: http://www.streamingmediadesign.nl/upload2/paardklein.jpg
Kan iemand mij vertellen wat ik niet goed doe? Voor mn gevoel zit ik fout bij de functie imagecopyresampled, bij deze waardes:

$imageInfo[0] / 2, $imageInfo[1] / 2, $imageInfo[0], $imageInfo[1]

Maar ik kan er naast zitten hoor..

[ Voor 5% gewijzigd door Verwijderd op 27-05-2003 14:35 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Mja, je maakt een plaatje aan met:
$dst_img = imagecreatetruecolor($imageInfo[0],$imageInfo[1]);

en vervolgens ga je het plaatje resamplen en schrijven in 1/4 van die region. Dan is het toch niet gek dat de rest zwart is?

Rond je variabelen trouwens goed af (door te casten naar int of te round()'en).

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm schreef op 27 May 2003 @ 14:45:
Mja, je maakt een plaatje aan met:
$dst_img = imagecreatetruecolor($imageInfo[0],$imageInfo[1]);

en vervolgens ga je het plaatje resamplen en schrijven in 1/4 van die region. Dan is het toch niet gek dat de rest zwart is?

Rond je variabelen trouwens goed af (door te casten naar int of te round()'en).
Ik ben er inmiddels idd achter dat dat mn eigen fout is, en dat ik de image al in een eerder stadium kleiner moet definieren met iets als:
$dst_img = imagecreatetruecolor($imageInfo[0]/2,$imageInfo[1]/2);
Dus dat wil nu gelukkig.

Maar weet je ook waarom in hemelsnaam de kwaliteit zo bar slecht is? Het lijkt niet eens meer op een paard... 8)

Ik weet wel dat de kwaliteit van GB niet denderend is, maar dit is niet helemaal goed lijkt me....

[ Voor 8% gewijzigd door Verwijderd op 27-05-2003 14:52 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ga even na of het bij het resizen gebeurt of bij het createn van je src_img. Oftewel, poep ook je src_img even uit.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
edit: ik heb het al! Beter, het ging (hoe stom) om de kwaliteitsbepaling die niet eens gedeclareerd was.... (ik heb het over de variabele $quality). Dit kwam omdat het scriptje rechtsstreeks van php.net komt, en nu heb ik hem op bijv. 75 gezet en het ziet er goed uit...... Dank allen, waarvoor weet ik niet, maar ik ben blij dat het nu goed werkt....

[ Voor 74% gewijzigd door Verwijderd op 27-05-2003 15:03 ]