Hello everybody,

I have images on a website on wich i am fooling arround with a bit.
i want to make thumbs from bigger pictures, that i worked out.
but when resizing the pictures to smaller versions they tend to get displayed rotated because the orientation is set wrong.
I found below function to repair that issue and i tried to add some code to it so it will work also with other then jpg files.
the files i am currently trying to resize are all jpg btw.
I bet you all can see i am no master at php.... forgive me for that....

i hope someone can point me away from the error i am getting with below function.
i get the following error:
"Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2988 bytes) "

The line that gives the error is
$img = imagerotate($img, $deg, 0);



function correctImageOrientation($filename, $type) {
//echo $filename; exit;
  if (function_exists('exif_read_data')) {
    $exif = exif_read_data($filename);
    //echo $exif['Orientation'].'<br>';
	//print_r($exif);
	if($exif && isset($exif['Orientation'])) {
      $orientation = $exif['Orientation'];
      if($orientation != 1){
		switch ($type) 
		{
			case IMAGETYPE_JPEG:
				$img = imagecreatefromjpeg($filename);
				break;
	
			case IMAGETYPE_GIF:
				$img = imagecreatefromgif($filename); 
				break;
	
			case IMAGETYPE_PNG:
				$img = imagecreatefrompng($filename); 
				break;
	
			case IMAGETYPE_JPG:
				$img = imagecreatefromjpeg($filename); 
				break;

			case IMAGETYPE_WBMP:
				$img = imagecreatefromwbmp($filename); 
				break;
		}

        $deg = 0;
        switch ($orientation) {
          case 3:
            $deg = 180;
            break;
          case 6:
            $deg = 270;
            break;
          case 8:
            $deg = 90;
            break;
        }
        
		//echo $img;
		//echo $deg;
		//exit;
		if ($deg) {
          $img = imagerotate($img, $deg, 0);       
        }
        // then rewrite the rotated image back to the disk as $filename
		switch ($type) 
		{
			case IMAGETYPE_JPEG:
				imagejpeg($img, $filename);
				break;
	
			case IMAGETYPE_GIF:
				imagegif($img, $filename);
				break;
	
			case IMAGETYPE_PNG:
				imagepng($img, $filename);
				break;
	
			case IMAGETYPE_JPG:
				imagepng($img, $filename);
				break;

			case IMAGETYPE_WBMP:
				image2wbmp($img, $filename);
				break;
		}
      } // if there is some rotation necessary
    } // if have the exif orientation info
  } // if function exists     
}
This is a Dutch forum, so it is no problem to post your message in Dutch here. :-)

Can you check in phpinfo() what your memory limit is? It seems your run out of allocated memory.
You can increase 'memory_limit' with a php.ini or with ini_set.
memory_limit 128M

Stom van mij, ik ga er automatisch al van uit dat alles op internet tegenwoordig in het engels is.

Deze is toch echt Nederlands :-)
Ik zou je memory_limit eens verhogen naar 256 MB. Met 128 MB zit je vaak al erg krap. Vooral als je grote afbeeldingen wilt bewerken.
tnx, ik ga dat proberen. ik dacht dat 128mb al vrij veel was
Het ligt er een beetje aan wat je allemaal tegelijkertijd draait. Als je een uitgebreide Joomla of Wordpress draait, of een webshop, dan kan ik mij indenken dat 128 MB opeens erg krap is. Als het een zelfgebouwde site is, dan kan je ook kijken of je het een en ander kan optimaliseren. Misschien heb je wel queries die in een loop draaien, en kan je er een JOIN van maken. Of heb je ellenlange array's die overbodig lang zijn.
Top!!
gelukt met ini_set('memory_limit','256M');
heel erg bedankt.
alle thumbs worden nu mooi weer rechtop neergezet.



[size=xsmall]Toevoeging op 21/01/2023 14:41:58:[/size]

Misschien een handige functie voor anderen....

[size=xsmall]Toevoeging op 21/01/2023 14:45:12:[/size]

- Ariën - op 21/01/2023 14:39:36

Het ligt er een beetje aan wat je allemaal tegelijkertijd draait. Als je een uitgebreide Joomla of Wordpress draait, of een webshop, dan kan ik mij indenken dat 128 MB opeens erg krap is. Als het een zelfgebouwde site is, dan kan je ook kijken of je het een en ander kan optimaliseren. Misschien heb je wel queries die in een loop draaien, en kan je er een JOIN van maken. Of heb je ellenlange array's die overbodig lang zijn.


Ik heb ongetwijfelt overbodige stukken code in mijn programmeerwerk zitten, maar het is maar hobbymatig geknutsel....
Elke optimalisatieslag is een goede slag, zeg ik maar altijd.
- Ariën - op 21/01/2023 14:39:36

Het ligt er een beetje aan wat je allemaal tegelijkertijd draait. Als je een uitgebreide Joomla of Wordpress draait, of een webshop, dan kan ik mij indenken dat 128 MB opeens erg krap is. Als het een zelfgebouwde site is, dan kan je ook kijken of je het een en ander kan optimaliseren. Misschien heb je wel queries die in een loop draaien, en kan je er een JOIN van maken. Of heb je ellenlange array's die overbodig lang zijn.


Ik vraag me af of veel mensen tegenwoordig nog steeds zelfgebouwde sites gebruiken? Ik vraag me gewoon af, geen ruzie.
Ja! Meer vrijheid, geen extra leercurve om een pakket te leren kennen.
Van Noord op 01/02/2023 15:24:16

Ik vraag me af of veel mensen tegenwoordig nog steeds zelfgebouwde sites gebruiken? Ik vraag me gewoon af, geen ruzie.


Meer dan je denkt denk ik.
Het is een mooi tijdverdrijf als je noodgedwongen hele dagen thuis zit.
Enne, even goeie vrienden hoor.

Reageren