Registriert seit: 12. Aug 2004
2 Beiträge
|
Re: jpg-format ändern
24. Aug 2004, 10:27
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')
}
?>
|
|
Zitat
|