Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   jpg-format ändern (https://www.delphipraxis.net/28360-jpg-format-aendern.html)

geisi 23. Aug 2004 17:56


jpg-format ändern
 
Kann ich mit PHP oder Javascript irgendwie das format eines jpg-bildes ändern?

z.B.:
ein Bild mit 2048*1024 wird mit einem Dateiupload hochgeladen und ich will es zb.: im format 200*100 anzeigen und dabei auch die den Speicherbedarf verringern

Danke im Voraus

MarkusTh 24. Aug 2004 09:27

Re: jpg-format ändern
 
Ich benutze dafür eine Klasse, die ich mir erstellt habe und wiederverwenden kann. Es unterstütz das Hochladen von jpg,
png und gif-Dateien und das Speichern dieser im jpg- oder png-Format.

Code:
<?PHP
/******************************************************************/
/* Autor: Markus Thomas                                          */
/******************************************************************/
class imageupload
{
   var $imageupload;
   var $orgname;
   var $filesize;
   var $mimetype;
   var $tmpname;
   var $typ;
   var $quality;
   function imageupload($file)
   {
      $this->tmpname=$file['tmp_name'];
      $this->orgname=$file['name'];
      $this->filesize=$file['size'];
      $this->mimetype=$file['type'];
      return $this->_is_valid();
   }
   
   function _is_valid()
   {
      $typ=explode('/',$this->mimetype);
      if($typ[0]!='image') return false;
      else
      {
         $this->typ=exif_imagetype($this->tmpname);   
         return true;
      }
   }
   
   function _moveto($newname, $dir, $size_x, $size_y, $typ)
   {
      $q=($this->quality>0 ? $this->quality : 85); //Qualitätsstufe festlegen 0 bis 100
      
      switch($this->typ)
      {
         case 2:
            $im=imagecreatefromjpeg($this->tmpname);
         break;
         case 1:
            $im=imagecreatefromgif($this->tmpname);
         break;
         case 3:
            $im=imagecreatefrompng($this->tmpname);
         break;
         default:
            return false;
            exit();
         break;       
      }
      
      if(! $im)
      {
         return false;
         exit();
      }
      
      $x=imagesx($im);
      $y=imagesy($im);
      $resize=1;
      if(($size_x/$x)<$resize && $size_x>0)
      {
         $resize=$size_x/$x;
      }
      if(($size_y/$y)<$resize && $size_y>0)
      {
         $resize=$size_y/$y;   
      }
      // Nur für GD2-Unterstuetzung und PHP >=4.0.6 - Groessenaenderung mit Antialiasing
      $im_neu=imagecreatetruecolor(intval($x*$resize),intval($y*$resize));
      imagecopyresampled($im_neu,$im,0,0,0,0,imagesx($im_neu),imagesy($im_neu),imagesx($im),imagesy($im));
      /* bei gd Version < 2 oder PHP < 4.0.6 :
      $im_neu=imagecreate(intval($x*$resize),intval($y*$resize));
      imagecopyresized($im_neu,$im,0,0,0,0,imagesx($im_neu),imagesy($im_neu),imagesx($im),imagesy($im));
      */
      if($typ=='') $typ='jpg';
      
      switch($typ)
      {
         case 'jpg':
            $path="$dir/$newname.jpg";
            imagejpeg($im_neu,$path, $q);
         break;
         case 'png':
            $path="$dir/$newname.png";
            imagepng($im_neu, $path);
         break;
         default:
            $path=false;
         break;   
      }
      @imagedestroy($im_neu);
      return $path;
   }   
   
   function _setquality($q)
   {
      $this->quality=intval($q);   //Qualitätsstufe setzen
   }
}
?>
Der Aufruf der Klasse kann mit folgendem Code erfolgen:

Code:
<?PHP
require("imageupload.class.php"); //Klasse laden
if($myimage=new imageupload($_FILES['bild'])) then //in diesem Fall hat das Upload-Formularfeld den namen 'bild'
{
          $myimage->_moveto('neuesbild','/home/bilder',800,600,'jpg');
          /* Die Parameter der Funktion haben folgende Bedeutung: Name des Bildes auf Server, Verzeichnis auf Server,
             max. Breite, max. Hoehe, Bildformat auf Server('jpg' oder 'png')
}
?>

geisi 25. Aug 2004 16:28

Re: jpg-format ändern
 
Danke!

Wirklich danke für diesen langen Code! werde die klasse jetzt ausprobieren!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz