[GD] ImageCreate lukt, maar niet van JPEG

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

  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Na lang treuzelen wilde ik nu eens met php wat grafische bewerkingen doen. Ik ben begonnen met iets simpel, dit:

PHP:
1
2
3
4
Header("Content-type: image/jpeg"); 
$image = ImageCreateTrueColor(200,200); 
ImageJPEG($image); 
ImageDestroy($image);


Hiermee krijg ik dus een zwart vierkant, hier zie je het resultaat: http://www.groeninge.com/test/gd1.php
Niets speciaal eigenlijk, maar ik ben daar al gelukkig mee. Ik weet nu dat GD correct werkt. Andere kleurtjes, figuurtjes en tekst erin steken kan ik ondertussen ook al.

Dan verander ik in die code één regel. In plaats van zelf een nieuwe afbeelding aan te maken, wil ik nu een importeren:
PHP:
1
2
3
4
Header("Content-type: image/jpeg"); 
$image = ImageCreateFromJPEG("foto.jpg"); 
ImageJPEG($image); 
ImageDestroy($image);


Maar ik krijg geen resultaat :( , alleen dit: http://www.groeninge.com/test/gd2.php.
Dat bestand dat ik wilde importeren bestaat wel degelijk, zie http://www.groeninge.com/test/foto.jpg, dus dat is het probleem niet.

Opzoekingswerk op php.net zegt mij dat dit op die manier gewoon moet werken.

Is er iemand die weet hoe het komt dat dit niet werkt en hoe het opgelost kan worden? Of doe ik iets verkeerd, ben ik iets vergeten? Is er wat mis met de server? Ik weet het niet meer.

Stukje uit de phpinfo():
code:
1
2
3
GD Support                           enabled 
GD Version                            bundled (2.0 compatible) 
JPG Support                          enabled

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 15-08 15:31

reapher

Z POWER

Ik had hetzelfde probleem. Oplossing is om de jpg die je wil importeren te copyeren over de nieuwe image. Met imagecopy doe je dit of imagecopymerge. Hoe ik het heb gebruikt kan ik helaas niet showen :S me webserver is al een tijdje dood :D

Click hier niet


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
Heb je het al eens met een ander formaat bijvoorbeel png geprobeerd?

Verder een typo: [url]http://www.groeninge.com/test/gd1.php[/utl] Dat url hoeft trouwens niet React bedenkt zelf toch wel dat het een link is, zonder http.

  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 15-08 15:31

reapher

Z POWER

Hier is dan :D Eigenlijk voor een thumbnail maker maar dat maakt niet uit :D

Hier kunnen btw wat foutjes in staan ivm met oude versie.

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
            //image(jpg) omzetten voor image edit gebruik
            
            $imagesmall=imagecreatefromjpeg($this->location ."".$this->lastPid."".$arr[$i]['name']."");
            $iml_width=imageSX($imagelarge);  
            $iml_height=imageSY($imagelarge); 

            //als breedte groter dan hoogte breedte aanpassen
            if($iml_width >= $iml_height)
                {
                $factor=$iml_width/640;
                $new_iml_width=640;
                $new_iml_height=$iml_height/$factor;
                }
            //anders hoogte groter dan breedte dus hoogte aanpassen
            else
                {
                $factor=$iml_height/480;
                $new_iml_height=480;
                $new_iml_width=$iml_width/$factor;
                }
            //afrondingen weghalen
            $new_iml_height=round($new_iml_height);
            $new_iml_width=round($new_iml_width);
            //daadwerkelijke plaatje omzetten
            
            $new_l_im=imagecreate($new_iml_width,$new_iml_height);  
            ImageCopyResized($new_l_im,$imagelarge, 0, 0, 0, 0, $new_iml_width, $new_iml_height, $iml_width, $iml_heigh);  
            imagejpeg ($new_l_im,$this->location ."".$this->lastPid."".$arr[$i]['name']."","70"); 
            ImageDestroy($imagelarge);  
            ImageDestroy($new_l_im);


P.S. omdat het dus een oude versie was :D moet je even alle imagecreate verandere naar truecolor. Have fun

Click hier niet


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 21-08 22:16
ook ik heb mijn thumbnailer online staan, check http://members.home.nl/boblelieveld/got/thumbnailer.phps voor meer info

[ Voor 19% gewijzigd door Hmmbob op 26-03-2006 20:07 . Reden: link gewijzigd ]

Sometimes you need to plan for coincidence


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Het kopieren van die .jpg op een ander $image lukt ook niet (niet met imagecopy(), imagecopyresized() of imagecopymerged()). Ik heb het gevoel dat hij die bestaande jpg gewoon niet kan inlezen. Iets met chmod te maken?

Met png heb ik jammergenoeg hetzelfde probleem.

Die thumbnailers werken niet bij mij, ik had en heb er al enkele geprobeerd. Daarom wil ik het nu vanaf de grond zelf maken zodat ik het script helemaal begrijp. Het is eigenlijk niet om een gewone thumbnailer te maken, dus moet ik het wel volledig snappen.

Iemand die iets gelijkaardig meegemaakt heeft? Of nog tips bij het debuggen?

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 21-08 22:16
debug: zet de header:blabla eens uit, en kijk eens wat je in je browser krijgt?

Sometimes you need to plan for coincidence


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Er komt dan helemaal niets in mijn browser.

Dit lijntje is duidelijk het probleem:
PHP:
1
$image = ImageCreateFromJPEG("foto.jpg");


Een echo(); na deze lijn wordt niet uitgevoerd, ervoor wel (zonder header).
Niet normaal zeker :?

  • creative8500
  • Registratie: September 2001
  • Laatst online: 03-01 16:54

creative8500

freedom.

doe eens phpinfo(), en kijk onder gd wat er staat bij jpeg-read :)

  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
euhm, da's alles wat bij GD staat:
code:
1
2
3
4
5
6
7
8
GD Support               enabled 
GD Version                bundled (2.0 compatible) 
FreeType Support     enabled 
FreeType Linkage     with freetype 
GIF Read Support     enabled 
JPG Support              enabled 
PNG Support             enabled 
WBMP Support          enabled


Moet er ook nog JPEG read zijn?

[ Voor 7% gewijzigd door Sibbe op 12-08-2003 23:44 ]


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 21-08 22:16
Sibbe schreef op 12 August 2003 @ 23:28:
Een echo(); na deze lijn wordt niet uitgevoerd, ervoor wel (zonder header).
Niet normaal zeker :?
inderdaad. hieruit blijkt dat hij het bestand om de een of andere reden niet kan openen. Ik gebruik, om dit af te vangen, het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function LoadJpeg($bestand) { 
  $image = @imagecreatefromjpeg("./$bestand");  // Originele inlezen 
  if (!$image) { // bestand bestaat niet 
    $image  = imagecreate (120, 90); 
    $back_color = imagecolorallocate ($image, 255, 255, 255); 
    $text_color = imagecolorallocate ($image, 0, 0, 0); 
    imagefilledrectangle ($image, 0, 0, 120, 90, $back_color); 
    imagestring ($image, 2, 0, 25, "Error loading image:", $text_color); 
    imagestring ($image, 2, 0, 45, "File not found.", $text_color); 
  } 
  return $image; 
}

probeer eens van
PHP:
1
$image = ImageCreateFromJPEG("foto.jpg");

te maken:
PHP:
1
$image = ImageCreateFromJPEG("./foto.jpg");

Sometimes you need to plan for coincidence


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Jouw functie LoadJpeg() werkt jammergenoeg ook niet. imagecreatefromjpeg() komt er opnieuw in voor, zelfs als ik LoadJpeg() niet aanroep komt er niets uit in mijn browser.

./ voor de bestandsnaam hielp ook niet.

Ondertussen heb ik nog wat verder, in de errorlogs vond ik dit:
[Wed Aug 13 00:45:21 2003] [error] PHP Fatal error: Call to undefined function:  imagecreatefromjpeg() in /test/gd.php on line 22
PHP kent die functie dus gewoon niet op mijn server :? ?
Hoe kan dit komen en hoe kan het opgelost worden?

[ Voor 3% gewijzigd door Sibbe op 13-08-2003 00:59 ]


  • flexje
  • Registratie: September 2001
  • Laatst online: 21-08 23:37

flexje

got-father

Probeer is een ander plaatje, ik zat ook de hele tijd te klooien met fotogallery omdat ie bij mij ook niks liet zien. Kwam erachter dat foto een vage eigenschap had. Ik kon foto ook niet openen in Photoshop, maar wel in Internet Explorer. :/
Maargoed, BMP word bij mij op de een of andere manier ook niet ondersteunt in mn gallery.

"Try not to become a man of success but rather to become a man of value..."


Verwijderd

je hebt waarschijnlijk nog geen jpeg support. Zie daarover de comments op http://nl2.php.net/manual...n.imagecreatefromjpeg.php (vooral onderaan)

Eerst er voor zorgen dat die functie werkt voordat je dingen als andere plaatjes gaat proberen dat heeft nu geen zin.

  • flexje
  • Registratie: September 2001
  • Laatst online: 21-08 23:37

flexje

got-father

Verwijderd schreef op 13 August 2003 @ 10:10:
je hebt waarschijnlijk nog geen jpeg support. Zie daarover de comments op http://nl2.php.net/manual...n.imagecreatefromjpeg.php (vooral onderaan)

Eerst er voor zorgen dat die functie werkt voordat je dingen als andere plaatjes gaat proberen dat heeft nu geen zin.
Je kan toch wel ff snel een ander plaatje derin gooien :/ Zo gebeurd.

"Try not to become a man of success but rather to become a man of value..."


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 21-08 22:16
flexje schreef op 13 augustus 2003 @ 11:42:
[...]
Je kan toch wel ff snel een ander plaatje derin gooien :/ Zo gebeurd.
eerst lezen voor je blaat?
[Wed Aug 13 00:45:21 2003] [error] PHP Fatal error: Call to undefined function: imagecreatefromjpeg() in /test/gd.php on line 22
conclusie: een ander plaatje zal niet helpen, php kan gewoon de hele functie niet aanspreken.

Sometimes you need to plan for coincidence


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 13:50

BoAC

Memento mori

Wat geeft phpinfo() bij jou voor resultaat??

Bij mij ongeveer het volgende <? phpinf(); ?>

[ Voor 24% gewijzigd door BoAC op 13-08-2003 11:59 ]


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
imagecreatefromjpeg() en waarschijnlijk nog wat functie's werken dus niet. Zo ver ben ik al.
Hoe dat komt weet ik echt niet, GD is geïnstalleerd en JPEG support is enabled. De phpinfo() ziet er zo uit: www.groeninge.com/test/info.php voor wie hieruit iets kan afleiden.

De reacties op php.net hierover hebben het over versie's van php en gd van 2 jaar oud.

[ Voor 3% gewijzigd door Sibbe op 13-08-2003 12:52 ]


Verwijderd

Heeft je hosting toevallig niet een _rare_ instelling op de webserver? Mischien is het een idee om hun even te bellen en vragen waarom dat de JPEG functies niet werken.

  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Ze zullen geen standaardinstelling veranderd hebben bij het installeren zonder dat ze weten waarom ze dat doen, alles is dus zoveel mogelijk standaard.

Diegene die de server onderhoudt weet er ook niet alles van, maar als ik het probleem kan achterhalen en een oplossing ervoor ken zal hij dat graag aanpassen en zijn ik en nog 300 anderen ermee geholpen als ze deze functie willen gebruiken.

Service is dus geen probleem, op mijn vraag werd bvb mysql erop gezet. Ik mag hem alleen niet alle mogelijkheden laten testen om dat op te lossen :p (vrijwilligerswerk is nog altijd niet betaald).

[ Voor 6% gewijzigd door Sibbe op 13-08-2003 14:49 ]


  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 19-08 15:22

Willem2

Ω is futile

--with-jpeg-dir=/usr/local

klopt die configure switch wel?
Toen ik nl --with-jpeg deed gaf PHP 4.3.2 geen compilatie errors maar jpeg deed het mooi niet.
Met --with-jpeg-dir=/usr/local/include deed hij het wel!

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


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Controleer ook even de waarde bij disable_functions :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • paulh
  • Registratie: Juli 1999
  • Laatst online: 22-06 15:30
Willem2 schreef op 13 augustus 2003 @ 17:57:
--with-jpeg-dir=/usr/local

klopt die configure switch wel?
Toen ik nl --with-jpeg deed gaf PHP 4.3.2 geen compilatie errors maar jpeg deed het mooi niet.
Met --with-jpeg-dir=/usr/local/include deed hij het wel!
Dan kan het zijn dat "configure" hem gewoon genegeerd heeft en dan compileert hij dus prima (helaas dan wel zonder jpeg).

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Dit laatste heb ik in een mailtje naar de serverbeheerder gezet aangezien ik dat zelf niet kan aanpassen. Ik laat weten of dit het probleem verhelpt. Alvast bedankt ;)

  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
De serverbeheerder heeft in de ./configure '--with-jpeg-dir=/usr/local' aangepast naar '--with-jpeg-dir=/usr/local/include' en opnieuw laten compileren. Maar jammergenoeg is het niet gelukt, imagecreatefromjpeg() is nog altijd een ongedefinieerde functie voor php :'(

Er staat niets bij disable_functions.

De zoektocht is dus nog niet voorbij, wie heeft nog een idee wat het probleem kan zijn?
De nieuwe phpinfo is nog altijd te bekijken op www.groeninge.com/test/info.php

Vreemd, heel vreemd.

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 22-06 15:30
heeft hij ook gemeld wat de configure melde (bij het jpeg check gedeelte) toen hij die configure opnieuw deed ?

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • reapher
  • Registratie: Augustus 1999
  • Laatst online: 15-08 15:31

reapher

Z POWER

Ik heb wel het een en ander gevonden op internet voor je. Misschien dat het helpt.

Je kunt alleen een url gebruiken voor bestand naam met deze functie als fopen wrappers aan staat. Maar die staat aan zie ik net :(

Probeer anders even de directory link te gebruiken de volle dus als dat kan voor de zekerheid?

Het enige wat nog overblijft en wat hierboven al genoemd is zijn de rechten :S Check de rechten dus even

IK las ook nog ergens dat mensen inplaats van --with-jpeg-dir=/usr/local/include gewoon --with-jpeg-dir doen 8)7 Anders doen weer dit --with-gd --with-jpeg-dir=/usr/lib
8)7

of zou het een bug zijn? Heb je je code al een geprobeerd op een andere server?

Click hier niet


  • -=bas=-
  • Registratie: Oktober 2000
  • Laatst online: 17-07 05:15
Als je JPeg installatie-files default op de juiste plek staan dan mag je de lokatie weglaten bij de jpeg-optie.

Bij het configure script worden soms ook wat cache bestanden (steeds opnieuw) gebruikt. soms helpt het om deze even weg te gooien. Ik dacht dat het via een optie van configure ging of anders handmatig.

gd is een toollib voor o.a php om plaatje te bewerken deze functies kan je ook weer in PHP gebruiken. Maar als je enkel jpeg dingen nodig hebt dan kan je GD achter wege laten.

Senile! Senile Oekaki


  • Sibbe
  • Registratie: Maart 2001
  • Laatst online: 14-07 17:11
Ik vraag hem of er speciale meldingen bij de configure waren.
Url, directory en rechten komen hier nog niet van pas, eerst moet ik proberen de functie erkend te krijgen.
Over die --with-jpeg-dir=..... zal ik ook nog even uitzoeken, ook eens kijken op de server of die benodigde bestanden op de standaard plaats staan. Iemand een idee wat ik daar moet vinden?

Die cache wissen opnieuw proberen zal de serverbeheerder ook eens proberen.
GD is geïnstalleerd en werkt gedeeltelijk.

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 19-08 15:22

Willem2

Ω is futile

doe s een "locate libjpeg". Dan weet je iig OF je hem hebt en waar hij staat! :)

Check dan meteen ff of in /etc/ld.so.conf ook het pad naar libjpeg goed staat.
Dan kun je daarna recompilen met --with-jpeg. Houd er wel rekening mee dat hij de config.cache van PHP delete! Erg belangrijk!!! Bij voorkeur make clean in je PHP dir en daarna een rm config.cache. Daarna de hele ./configure riedel weer!

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

Pagina: 1