[PHP][GD] resizen bij verschillende php versies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een CMS achter een website gebruik ik voor het resizen van foto's de lib GD. Ik heb daar een functie voor waarin de foto wordt geresized met ImageCopyResampleBicubic().

Het probleem is dat op server van mijn provider (met PHP 4.2.3 onder Windows) de afbeeldingen na het resizen zwart zijn (het zijn JPG's!). Terwijl lokaal bij PHP 4.0.6 onder Windows het wel goed gaat.

Volgens mij ligt het niet aan de code maar aan de PHP versie maar juist waar het fout gaat is een nieuwere PHP versie :?

Acties:
  • 0 Henk 'm!

Verwijderd

Dat had ik ook een keer op een apache server met de laatste php versie. Het kwam er op neer dat het plaatje niet goed werd ingelezen maar dat er wel een plaatje werd gemaakt. Gevolg: zwart plaatje met de opgegeven lengte en breedte.

Toen lag het dus aan me code.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

waarschijnlijk ligt het aan de versie van GD die op de server is geinstalleerd..
Hou in je script rekening met de versie, en gebruik compatible functies per versie!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 22-08 14:17
GDlib 2 heeft veel mooiere resize functies dan de voorgaande versies. Helaas verschillen de versies nog wel eens tussen ontwikkel- en eindserver. (of wisselen de versies op de eindserver regelmatig.. |:( ja dat gebeurt ook)

Misschien heb ik een oplossing, maar hoe haalbaar die is weet ik niet. Onder Linux heb je het pakket ImageMagick, als je als normale gebruiker toegang hebt tot die server (en het is een Linux omgeving) kun je dat pakket installeren in je eigen homedir en aanroepen vanuit PHP:

PHP:
1
2
3
4
5
6
7
8
9
10
// test, klein.jpg bestaat nu nog niet, groot.jpg (640x480) wel
// absoluut pad, voor het geval system-wide een "convert" wordt geinstalleerd
`/home/gebruiker/bin/convert groot.jpg -resize 300x150 klein.jpg`
?>
<html>
<head></head>
<body style="background-color: #000000;">
[img]"klein.jpg"[/img]
</html>
<?


Bij mij werkt dit perfect, en je bent alleen maar afhankelijk van de versie die je zelf gebruikt.

Ik dacht niet dat het mogelijk was om GDlib op een dergelijke manier te gebruiken.

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

is ImageCopyResampleBicubic niet een PHP hack? is volgende mij dus geen standaard functie van PHP. Dus zul je hem op de meeste servers ook niet tegen komen!

Probeer eens ImageCopyResized of ImageCopyResampled (als je GD 2+ hebt). Dan zou je ook meteen van het zwarte plaatje af moeten zijn!

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

Verwijderd

ImageCopyResampled werkt perfect voor resizen. Alleen heb je wel GD2 nodig. Daarom zou je een foutafvanging daarvoor kunnen maken. Dus (met function_exists()) checken of je beschikking hebt over gd2 en dan de keuze maken tussen imagecopyresampled en imagecopyresized.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok bedankt voor de reacties.

Freak_NL: Zal niet gaan want het zijn Windows-omgevingen. Ik weet het, het is niet super maar daar kiest de klant voor in dit geval.

Willem2: Ik ga denk ik maar eens werken met ImageCopyResampled() want op de 'eindserver' draait GD2. Een controle kan er altijd nog in.
Pagina: 1