[PHP] MMS JPEG-formaat probleem met imageCreateFromJPEG()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Oak
  • Registratie: Juni 2003
  • Laatst online: 15-01-2022
Hoi,

Ik heb een probleem met imageCreateFromJPEG
Ik gebruik het in een script dat een jpeg uploadt:

Het ziet er, even in het kort, als volgt uit:
Ik gebruik een form-element genaamd ‘image’:
<input type="file" name="image" accept="image/jpeg" onChange="show_img();">

Na de post maak ik als volgt een jpeg:
$source = imageCreateFromJPEG($image);

Alles werkt prima met alle jpeg’s die ik gebruik, ECHTER jpeg’s gemaakt met m’n mobiele telefoon met camera (Nokia6220) worden niet geaccepteerd door imageCreateFromJPEG()

Ik krijg de volgende foutmelding:
Warning: imagecreatefromjpeg(): '/tmp/phpsMUny9' is not a valid JPEG file in /srv/oakdesi2/www/photo.oak.nl/engine/Admin/incs/image_resize_function.php on line 8

I begrijp dat dit te maken heeft met de JPEG formattering die Nokia gebruikt. Jpeg’s gemaakt met een SonyEricsson T610 worden wel gewoon geaccepteerd. Ook is het geen header probleem. Getuige dat if (exif_imagetype($image) = IMAGETYPE_JPEG) een positief resultaat oplevert.

Kent iemand misschien dit probleem of heeft iemand een idee waar meer over jpeg-indelingen te vinden is. En nog mooier, misschien kent iemand inmiddels een ‘workaround’ voor dit probleem.

Ik gebruik het image_script eveneens in combinatie met een emailbox, die ik pipe naar het script. De optie al m’n jpeg’s gemaakt met m’n telefoon door Photoshop of equivalent te halen zie ik dus niet zitten. Ik wil direct vanaf m’n telefoon een jpeg post kunnen doen. Daarom zou ik heel graag dit script werkende te hebben.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Kun je een voorbeeld jpg'je posten? Misschien is er met een commandline tooltje (bijv. ImageMagick) wel een jpg in de juiste indeling van te maken. Dat zou je dan in je script kunnen verwerken.

"He took a duck in the face at two hundred and fifty knots."


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Oak
  • Registratie: Juni 2003
  • Laatst online: 15-01-2022
Ik zie zo snel niet hoe ik een file bij een post kan uploaden, zie voor een betreffend JPEGje:

http://data.oak.nl/temp/mms-nokia6220.jpg

Deze wordt dus niet geaccepteerd door imageCreateFromJPEG() :(

terwijl de volgende statement:
if (exif_imagetype($image) = IMAGETYPE_JPEG) :)
een TRUE returned.

het is zoals gezegd dus geen header probleem.
Ik hoop dat iemand weet wat het verschil is in deze nokia-jpeg's
Windows e.d. kunnen overigens prima overweg met de JPEGs, ik heb dus vooralsnog alleen een probleem met imageCreateFromJPEG in PHP.

[ Voor 8% gewijzigd door Oak op 27-09-2004 09:02 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Hier werkt een thumnail scriptje met imagecreatefromjpeg prima. Ik denk dat je toch eens naar je scriptje moet kijken. Test ook eens een andere.

Of misschien maakt het uit welke GDlib je hebt? Hier heb ik gdlib 2.0.15. Werkt prima dus.

Acties:
  • 0 Henk 'm!

  • Oak
  • Registratie: Juni 2003
  • Laatst online: 15-01-2022
bedankt voor je reactie.
Ik gebruik GD Version: bundled (2.0.23 compatible)

mmm, echt vreemd.
Ik heb ook niet het idee dat het aan m'n script ligt. Met elk ander jpegje werkt het.

maar ik zal m'n script even bijvoegen.
ik gebruik het als volgt:

if(file_exists($image))
{
if (exif_imagetype($image) == IMAGETYPE_JPEG)
$source = imageCreateFromJPEG($image);
elseif (exif_imagetype($image) == IMAGETYPE_GIF)
$source = imageCreateFromGIF($image);
elseif (exif_imagetype($image) == IMAGETYPE_PNG)
$source = imageCreateFromPNG($image);
else
unset($source);// $source = false;
}

ik blijf deze fout houden:
Warning: imagecreatefromjpeg(): '/tmp/php9O6tro' is not a valid JPEG file in /srv/oakdesi4/www/www.photoclub.nl/engine/Admin/incs/image_resize_function.php on line 8


die eerste if levert dus gewoon een true op, echter gaat het mis bij de imageCreateFromJPEG($image). $image wordt niet herkend als een geldig JPEG formaat... (en dus alleen bij die nokia-jpegs)
bij elk ander jpegje werkt dit script prima!

op wat voor manier gebruik jij imageCreateFromJPEG()??
alvast bedankt!

[ Voor 14% gewijzigd door Oak op 27-09-2004 13:00 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Het is niet echt de bedoeling om complete source te posten. Maar ik ben niet zo'n expert met deze functies. Dus hierbij mijn scriptje. Het is de bedoeling dat ik een thumbnail maak van een originele jpeg of png. En werkt dus prima met jouw jpeg'je.

code:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
$kwaliteit = 75;
$thumbsize=120;
$margin = 2;
$border = true;
$shadow = false;
$jpeg = $HTTP_GET_VARS['img'];

if($d=getimagesize($jpeg)){
    $dim = ($d[1]>$d[0]) ? 1 : 0;
    $mod = $thumbsize / $d[$dim];

    $w = (int) ($d[0] * $mod);
    $h = (int) ($d[1] * $mod);

    $x = (int)(($thumbsize + $margin - $w) / 2);
    $y = (int)(($thumbsize + $margin - $h) / 2);

    if(eregi("^.*\.png", $HTTP_GET_VARS['img'])){
    header('Content-type: image/png');
    $src = imagecreatefrompng($jpeg);
    }   

    else if(eregi("^.*\.jpg", $HTTP_GET_VARS['img'])){
    header('Content-type: image/jpeg');
    $src = imagecreatefromjpeg($jpeg);
    }   
    
    $dst = ImageCreateTrueColor ($thumbsize+($margin * 2 ), $thumbsize+($margin * 2));
    $white = imagecolorallocate($dst,255,255,255);
    imagefill($dst,0,0,$white);
    if($border){
        $black = imagecolorallocate($dst,0,0,0);
        imagerectangle($dst,0,0,$thumbsize+$margin,$thumbsize+$margin,$black);
    }
    if($shadow){
        $lighter = imagecolorallocate($dst,220,220,220);
        imagefilledrectangle($dst,($x+3),($y+3),($w+$x+3),($h+$y+3),$lighter);
        $light = imagecolorallocate($dst,180,180,180);
        imagefilledrectangle($dst,($x+1),($y+1),($w+$x+1),($h+$y+1),$light);
        $dark = imagecolorallocate($dst,140,140,140);
        imagefilledrectangle($dst,($x),($y),($w+$x),($h+$y),$dark);
    }
    imagecopyresized($dst,$src,$x,$y,0,0,$w,$h,$d[0],$d[1]);
    imagejpeg($dst, '', $kwaliteit);
    $x = substr($jpeg, 0, strrpos($jpeg, "."));
    $naamx = $x . "_klein.jpg";
    ImageJPEG($dst,$naamx, $kwaliteit);
    imagedestroy($dst);
    imagedestroy($src);
}?>

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Nu online

pietje63

RTFM

Hier werkt:
code:
1
2
     $src_img = imagecreatefromjpeg($uploaddir."/groot"."/".$entry);
     $dst_img = imagecreate($fotobreedte,$new_h);

ook gewoon, zie http://www.t-h-o-m-a-s.nl/fotoboek3/fotoboek/ voor het resultaat.

Mijn gd:
gd
GD Support enabled
GD Version bundled (2.0.15 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

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


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Nou dat is mooi zeg. Maak je de thumnails trouwens on the fly? Het is voor de snelheid best wel lekker om zeg maar 1x een thumnail aan te maken en deze op te slaan. Dat doe ik ook in het scriptje wat ik heb gepost.

Acties:
  • 0 Henk 'm!

  • Oak
  • Registratie: Juni 2003
  • Laatst online: 15-01-2022
bedankt voor de posts!
Schijnbaar wijkt mijn GDlib versie iets af.
Ik ga zometeen meteen weer het een en ander uitproberen en het ook op een andere server proberen.

heb inmiddels het een en ander geprobeerd. Noork's script heb ik ook geprobeerd, maar precies hetzelfde probleem. Alle jpeg's doet ie prima, behalve de nokia-jpeg's.

Ik denk dat het dan toch door een andere GD-versie komt.
Heb het inmiddels op 2 verschillende servers van verschillende providers getest. Bij beide hetzelfde probleem.

onderstaand mijn GD details:

(server 1 - widexs.nl - virtual server)
GD Support enabled
GD Version bundled (2.0.23 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

(server 2 - bhosted.nl - virtual server)
GD Support enabled
GD Version bundled (2.0.23 compatible)
FreeType Support enabled
FreeType Linkage with freetype
T1Lib Support enabled
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

GD versies zijn dus identiek...@#%!
maar het lijkt wel steeds aannemelijker dat het veroorzaakt wordt door de GD versie. Aangezien ik zo goed als letterlijk Noork's script heb overgenomen en gedraaid. Werkt prima met andere jpeg's maar niet met .........

echt shit dit.
mocht iemand nog een andere verklaring of reden hebben... of een workaround kennen, ik hoor het heel erg graag!!

[ Voor 81% gewijzigd door Oak op 27-09-2004 17:53 ]

Pagina: 1