[PHP] image resampling probleem

Pagina: 1
Acties:
  • 143 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben aan het werken aan een soort afbeelding upload en management tool. Ik wil de afbeeldingen die al op de server staan kunnen resizen, de kwaliteit veranderen e.d. Hiervoor gebruik ik eigenlijk dezelfde code die ook gebruikt wordt bij het uploaden van de afbeeldingen. Bj het uploaden werkt het perfect, maar als ik het gebruik voor bestanden die al op de server staan komt er altijd een zwarte afbeelding terug. Wat doe ik verkeerd?

Dit is de code, waar $image = path/naar/image.jpg en het bestand bestaat:

PHP:
1
2
3
4
$source = imagecreatefromjpeg($image);
$image_destination = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_destination, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_destination, $image, $quality);

Acties:
  • 0 Henk 'm!

Verwijderd

Aangezien je source rechtstreeks van php.net komt (http://nl3.php.net/manual/nl/function.imagecopyresampled.php) zal ik je maar niet vertellen waar je goede voorbeelden kunt vinden ;-)

Het lijkt me dat je leesrechten niet goed zijn. Even testen of $source dus écht wel correct is:
PHP:
1
2
3
if ($source) {
   test ok!
}

Mocht dat het niet zijn, dan is je GD library denk ik te oud. Minimaal GD2.01 moet je hebben.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$source is correct, heb volgens mij alle leesrechten voor php. Zou willen dat ik het probleem met een chmodje op kon lossen, maar helaas dus.

Verder heb ik GD Version: bundled (2.0.28 compatible). Het lijkt me dus niet dat de GD library te oud is.

Het vreemde is dat ik de bestanden na het uploaden ook verklein en er nog een kleinere thumbnail van maak, wat perfect werkt.

Acties:
  • 0 Henk 'm!

  • D4V3
  • Registratie: Augustus 2003
  • Laatst online: 19-03-2021
probeer het eens met de imagecopyresized functie ipv imagecopyresampled, wil nog wel eens werken bij oudere gd libs, evenals imagecreatetruecolor vervangen door imagecreate.

op-voorraad.nl - Realtime voorraad updates voor de Playstation 5!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
D4V3 schreef op dinsdag 04 juli 2006 @ 14:06:
probeer het eens met de imagecopyresized functie ipv imagecopyresampled, wil nog wel eens werken bij oudere gd libs, evenals imagecreatetruecolor vervangen door imagecreate.
De bovenstaande code die ik gebruikt werkt wel op de server, alleen niet met de bestanden die ik al eerder bewerkt heb en die op de server staan. Als ik dezelfde bestanden download en nog een keer met het script upload werkt het wel. Ik neem dus aan dat het niet aan het gebruik van deze functies ligt.

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
Dit heeft er mee te maken dat een andere user (in linux) eigenaar van de bestanden is. Je had ze na het uploaden meteen een andere chmod moeten geven. Je zult nu waarschijnlijk je hoster moeten vragen de bestanden voor je aan te passen zodat je ze zelf weer kunt bewerken.

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14

pietje63

RTFM

BoukeHaarsma schreef op woensdag 05 juli 2006 @ 00:52:
Dit heeft er mee te maken dat een andere user (in linux) eigenaar van de bestanden is. Je had ze na het uploaden meteen een andere chmod moeten geven. Je zult nu waarschijnlijk je hoster moeten vragen de bestanden voor je aan te passen zodat je ze zelf weer kunt bewerken.
Ligt eraan wie de bestaden geupload heeft toch?
Of je hebt ze zelf via ftp geupload -> dan kun je het zelf via ftp oplossen
Of je hebt ze zelf via php geupload -> dan kun je het zelf via php oplossen

Ik weet het niet zeker, maar misschien kun je ipv het file-path proberen de afbeeldingen via http te bereiken/andersom? Verder kun je natuurlijk wat andere testjes doen zoals kijken of je wel de bestandsgrootte/ dimensies van de afbeeldingen uit kan lezen.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb op mijn eigen Windows XP computer een test server draaien. Overigens doe ik wel een CHMOD na het uploaden, kan me niet voorstellen dat dit me niet genoeg rechten zou geven. "Administrators" is eigenaar van de bestanden, ik neem aan dat dit niet een gebruiker is maar een gebruikersgroep en de account waaronder ik Apache en PHP uitvoer is ook lid van deze groep. Het script werkt ook niet als ik de afbeelding via http laadt.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

BoukeHaarsma schreef op woensdag 05 juli 2006 @ 00:52:
Dit heeft er mee te maken dat een andere user (in linux) eigenaar van de bestanden is. Je had ze na het uploaden meteen een andere chmod moeten geven. Je zult nu waarschijnlijk je hoster moeten vragen de bestanden voor je aan te passen zodat je ze zelf weer kunt bewerken.
Het is eigenlijk not done, maar wat gebeurd er als je een chmod tijdelijk op 777 zet? Dan kan iedereen er namelijk bij en aanpassingen doen... :)

chmod is toch trouwens een Unix / Linux commando? Hoe kan je die dan uitvoeren op Windows? :?
Er schijnt op internet wel een programma te zwerven die schuil gaat onder de naam chmod-win of zo... :)

[ Voor 16% gewijzigd door CH4OS op 05-07-2006 13:25 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem lag niet aan onvoldoende rechten maar zat in de code zelf. Ik heb nog eens alle variabelen nagelopen en kwam erachter dat ik na een update vergeten ben om de naam van breedte en hoogte variabelen van de afbeelding aan te passen. Vandaar dat bij het aanroepen van de functie er iets mis ging en dat beide variabelen 0 waren in plaats van kloppende breedte en hoogte. Doh!

Bedankt voor jullie suggesties in ieder geval!
Pagina: 1