[php] exif probleem *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een plaatje welke volgens de functie exif_imagetype() van het type jpeg zou zijn.

Als ik dit plaatje dan met de functie imagecreatefromjpeg() of imagecreatefromstring() probeer te openen krijg ik een error melding (blabla is not a valid JPEG file).

Doe ik de binaire data gewoon doorsturen naar de browser, dan gaat dit zonder problemen.

Als ik de JPEG file in UltraEdit open dan staat op de plaats waar normaal JFIF staat nu EXIF dus lijkt het mij dat dit een EXIF jpeg is. Waarom kan ik deze dan niet gewoon inlezen????

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Probeer die file eens te converteren naar PNG en daarna weer terug te converteren naar JPG. Ik vermoed dat er een of ander vaag programma is gebruikt om die image te maken, of dat de file beschadigd is. En om te zien of het ergens anders aan ligt zul je code moeten posten. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De persoon waar ik de foto's van heb heeft deze van zijn eigen digitale camera afgehaald en daarna proberen te uploaden naar de site. (PENTAX EI-100 volgens image info).

code:
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
31
32
33
34
35
36
37
38
39
40
  function GetImage( $iImageId, $iMaxWidth = -1, $iMaxHeight = -1 )
  {
     if (($ImageData = $this->PictureTable->GetImageBlobData($iImageId)) === false) {
      return $this->ErrorImage();
    }

    if(($iMaxWidth == -1) AND ($iMaxHeight == -1)) {
      return $ImageData;
    }
    
    $GdImage = imagecreatefromstring( $ImageData );
    
    $ImgWidth = imagesx($GdImage);
    $ImgHeight = imagesy($GdImage);
    
    $WidthRatio   = $ImgWidth / $iMaxWidth;
    $HeightRatio  = $ImgHeight / $iMaxHeight;

    if( $HeightRatio > $WidthRatio ) {
      if( $ImgHeight < $iMaxHeight ) {
        $TargetHeight = $ImgHeight;
        $TargetWidth = $ImgWidth;
      } else {
        $TargetHeight = $iMaxHeight;
        $TargetWidth = round(( $iMaxHeight * $ImgWidth ) / $ImgHeight);
      }
    } else {
      if( $ImgWidth < $iMaxWidth ) {
        $TargetWidth = $ImgWidth;
        $TargetHeight = $ImgHeight;        
      } else {
        $TargetWidth = $iMaxWidth;
        $TargetHeight = round(( $iMaxWidth * $ImgHeight ) / $ImgWidth);
      }
    }

    $NewImage = @imagecreatetruecolor ($TargetWidth, $TargetHeight);
    imagecopyresampled( $NewImage, $GdImage, 0, 0, 0, 0, $TargetWidth, $TargetHeight, $ImgWidth, $ImgHeight);
    imagejpeg( $NewImage );
  }


de image info wordt ingelezen door dit stukje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function GetImageBlobData($iImageId)
  {
    global $g_HdPictureGalleryImagesDirectory;
    
    if( ($handle = fopen ($g_HdPictureGalleryImagesDirectory . $iImageId .".jpg", "rb") ) === false ) {
      return false;
    }
    
    $contents = fread ($handle, filesize ($g_HdPictureGalleryImagesDirectory . $iImageId .".jpg"));
    fclose ($handle);
    return $contents;
  }


Het is niet de bedoeling dat jullie het helemaal voorkauwen aan mij maar een beetje hulp zou erg fijn zijn.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Zo te zien zit het niet in je code, die ziet er volgens mij netjes uit. Probeer dat converteertruukje eens anders. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

kijk es naar de kleuren in de jpeg, zijn deze RGB?
Als je een jpg opslaat in CMYK kleuren, dan kun je ze ook niet lezen...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 02 juni 2004 @ 16:42:
kijk es naar de kleuren in de jpeg, zijn deze RGB?
Als je een jpg opslaat in CMYK kleuren, dan kun je ze ook niet lezen...
Volgens mij was dit in de GDlib update van PHP 4.3.6 opgelost overigens. Al zal die het uiteraard wel converteren naar RGB (wat enig verschil op kan leveren).

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Bosmonster schreef op 02 juni 2004 @ 17:22:
Volgens mij was dit in de GDlib update van PHP 4.3.6 opgelost overigens. Al zal die het uiteraard wel converteren naar RGB (wat enig verschil op kan leveren).
Webservers zitten vaak nog rond versie 4.2 van PHP te sukkelen, dus of TS daar wat aan heeft? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1