1211chef: Gedrehte Bilddateien abhängig vom Endgerät - wie begegnet ihr der Sachlage

Beitrag lesen

Hallo 1211chef,

ein funktionierendes Vorgehen ist: ImageMagicks convert mit -auto-orient das Bild richtig drehen lassen und mit -strip die EXIF-Daten zu entfernen.

So wird das Bild in jedem Gerät gleich dargestellt, und, sofern die EXIF-Daten nicht lügen, auch in der richtigen Orientierung.

LG,
CK

hallo christian, yepp, passt ::thumbsUP:: deine tipps sind immer wieder hervorragend! das ganze sieht in perl jetz mal auszugsweise in der testvers. so aus.

was kann ich noch zum thema fileprüfung besser/sicherer machen?


#!/usr/bin/perl

use [allerhandzeugs]
use File::Type;
use Image::Magick;

  my $q         =      new CGI;
  my $ft        =      File::Type->new();  
  my $img 		  =      Image::Magick->new();
  my $ID 	      = 	   $q->param	("ID");
  my $machwas 	= 	   $q->param	("machwas");

  my $fname 	  = 	   $q->param	("upload");
  my $handle 	  = 	   $q->upload	("upload");

if ($machwas)
{
  $fname 		    =      ~s/(?:\\|\/)([^\\\/]+)$/$1/g;
  my ($a,$end) 	= 	   split(/\.$+/, $fname);
  $end			    =	     lc($end);
  $fname		    =	     $ID.time().".".$end;
  
      open (FILE, ">../../pics/$fname") or die "Can't create file: $!"; my $buffer;
      while (read($handle,$buffer,2048)) { print FILE $buffer; } close (FILE);
	  
      my $type 	= 	$ft->mime_type("../../pics/$fname");
	    my $gr		= 	-s("../../pics/$fname");
	
	    if ( ($type ne "image/jpeg") && ($type ne "image/png") && ($type ne "image/x-png") ) 
		  { print header('text/plain'); print"L-In Error :: falsches Dateiformat $type";	
	    unlink("../../pics/$fname"); goto end; }
	  
	  
	  $img->Read("../../pics/$fname") || die "Cannot read $fname!";

	  my ($wo,$ho)    =    $img->Get('width','height'); 
    my $max         =    600; 
    my $wn          =    $wo; 
    my $hn          =    $ho; 
    my $ratio       =    $wo/$ho;

	  if ( ($wo > $max) || ($ho > $max) ) {
	  if ($ratio > 1) { $wn = $max; $hn = int($max / $ratio); } else { $wn = int($max * $ratio); 
    $hn = $max; } $img->Sample("$wn x $hn"); }

	  my $text="© by IchBins";

	  $img->Strip; 
    $img->AutoOrient;

	  $img->Annotate(text=>$text,font=>'courier',pen=>'black',undercolor=>'#FFFFFFBB',
    pointsize=>30,gravity=>'South',geometry=>'+20 +20');

	  $img->Write("../../pics/$fname") || die "Cannot write $fname!";
}