
Datum: 30.08.2009 (571x gelesen)
Name: Andreas / Webseite: http://www.devAS.de
=> zurück zur Übersicht
so dele
PS: Vorschläge für eine eventl. sinnvollere OOP bitte unbedingt hier loswerden. Ich habe leider immer noch so meine Schwierigkeiten mit dem Verstehen von OOP.
Name: Andreas / Webseite: http://www.devAS.de
=> zurück zur Übersicht
ImageResize - Klasse
folgende Klasse entstand im Jahre 2005 und war bisher auf dem WebStyleboard veröffentlicht
Momentan versuche ich gerade das mit OOP und Class und so zu schnallen. Deshalb hab ich mal spasseshalber eine Klasse zum Erstellen von Vorschaubildern gebaut. (ich hatte diese Funktion vorher als eine Funktion. Ich weiss das dies nix weltbewegendes ist und es solche Sachen wie Sand am Meer gibt ... aber hier geht es darum, mich weiterzuentwickeln und zu neuen Ufern aufzubrechen :)
<?php
class resizer{
var $imgDatei;
var $imgBreit;
var $imgHoch;
var $imgRatio = 1;
var $imgQuality = 95;
var $imgData;
var $newHoch;
var $newBreit;
function set_breit($breit){
$this->imgBreit = $breit;
}
function set_hoch($hoch){
$this->imgHoch = $hoch;
}
function set_ratio($ratio){
$this->imgRatio = $ratio;
}
function set_quality($r){
$this->imgQuality = $r;
}
function set_datei($datei){
$this->imgDatei = $datei;
if(!file_exists($datei))$this->is_error("Die Datei '".$this->imgDatei."' existiert nicht.");
$this->set_data($this->imgDatei);
}
function set_data($datei){
$this->imgData = getimagesize($this->imgDatei);
if($this->imgData[2] != 1 && $this->imgData[2] != 2 && $this->imgData[2] != 3)
$this->is_error("Die Datei hat kein erlaubtes Dateiformat (jpg,gif,png)");
// $this->imgData[0] - Breite
// $this->imgData[1] - Höhe
// $this->imgData[2] - Typ gif etc
}
function set_newdata(){
if($this->imgRatio == 1){
if( $this->imgData[0] >= $this->imgData[1] ){
$this->new_breit = $this->imgBreit;
$this->new_hoch = abs($this->imgData[1] * $this->new_breit / $this->imgData[0]);
}
if( $this->imgData[0] < $this->imgData[1] ){
$this->new_hoch = $this->imgHoch;
$this->new_breit = abs($this->imgData[0] * $this->new_hoch / $this->imgData[1]);
}
}else{
$this->new_breit = $this->imgBreit;
$this->new_hoch = $this->imgHoch;
}
}
function get_resize($dateiname = ""){
$this->set_newdata();
if($this->imgData[2]==1)$vorlage = imagecreatefromgif($this->imgDatei);
if($this->imgData[2]==2)$vorlage = imagecreatefromjpeg($this->imgDatei);
if($this->imgData[2]==3)$vorlage = imagecreatefrompng($this->imgDatei);
$new_bild = imagecreatetruecolor($this->new_breit, $this->new_hoch);
// Das geladene Bild auf Thumbnailgröße verkleinern
imagecopyresampled($new_bild,
$vorlage,0,0,0,0,
$this->new_breit,$this->new_hoch,
$this->imgData[0],$this->imgData[1]);
if($this->imgData[2]==1)imagegif($new_bild,$dateiname);
if($this->imgData[2]==2)imagejpeg($new_bild,$dateiname, $this->imgQuality);
if($this->imgData[2]==3)imagepng($new_bild,$dateiname);
ImageDestroy($vorlage);
}
function is_error($msg){
echo "<strong>Es ist ein Fehler aufgetreten</strong><br />";
echo $msg;
die();
}
}
?>
class resizer{
var $imgDatei;
var $imgBreit;
var $imgHoch;
var $imgRatio = 1;
var $imgQuality = 95;
var $imgData;
var $newHoch;
var $newBreit;
function set_breit($breit){
$this->imgBreit = $breit;
}
function set_hoch($hoch){
$this->imgHoch = $hoch;
}
function set_ratio($ratio){
$this->imgRatio = $ratio;
}
function set_quality($r){
$this->imgQuality = $r;
}
function set_datei($datei){
$this->imgDatei = $datei;
if(!file_exists($datei))$this->is_error("Die Datei '".$this->imgDatei."' existiert nicht.");
$this->set_data($this->imgDatei);
}
function set_data($datei){
$this->imgData = getimagesize($this->imgDatei);
if($this->imgData[2] != 1 && $this->imgData[2] != 2 && $this->imgData[2] != 3)
$this->is_error("Die Datei hat kein erlaubtes Dateiformat (jpg,gif,png)");
// $this->imgData[0] - Breite
// $this->imgData[1] - Höhe
// $this->imgData[2] - Typ gif etc
}
function set_newdata(){
if($this->imgRatio == 1){
if( $this->imgData[0] >= $this->imgData[1] ){
$this->new_breit = $this->imgBreit;
$this->new_hoch = abs($this->imgData[1] * $this->new_breit / $this->imgData[0]);
}
if( $this->imgData[0] < $this->imgData[1] ){
$this->new_hoch = $this->imgHoch;
$this->new_breit = abs($this->imgData[0] * $this->new_hoch / $this->imgData[1]);
}
}else{
$this->new_breit = $this->imgBreit;
$this->new_hoch = $this->imgHoch;
}
}
function get_resize($dateiname = ""){
$this->set_newdata();
if($this->imgData[2]==1)$vorlage = imagecreatefromgif($this->imgDatei);
if($this->imgData[2]==2)$vorlage = imagecreatefromjpeg($this->imgDatei);
if($this->imgData[2]==3)$vorlage = imagecreatefrompng($this->imgDatei);
$new_bild = imagecreatetruecolor($this->new_breit, $this->new_hoch);
// Das geladene Bild auf Thumbnailgröße verkleinern
imagecopyresampled($new_bild,
$vorlage,0,0,0,0,
$this->new_breit,$this->new_hoch,
$this->imgData[0],$this->imgData[1]);
if($this->imgData[2]==1)imagegif($new_bild,$dateiname);
if($this->imgData[2]==2)imagejpeg($new_bild,$dateiname, $this->imgQuality);
if($this->imgData[2]==3)imagepng($new_bild,$dateiname);
ImageDestroy($vorlage);
}
function is_error($msg){
echo "<strong>Es ist ein Fehler aufgetreten</strong><br />";
echo $msg;
die();
}
}
?>
benutzt wird die sache dann so:
<?php
// Klasse initialisieren
$img = new resizer();
// Breite des neuen Bildes festlegen, wenn Breite > Höhe bei ratio = 1
$img->set_breit(150);
// Höhe des neuen Bildes festlegen, wenn Breite < Höhe bei ratio = 1
$img->set_hoch(100);
// Ratio 1 für an und 0 für aus
// 1 = Bild wird proportional geändert, also nicht verzerrt
// 0 = Bild wird mit den oben angegebenen Maßen erstellt
$img->set_ratio(1);
// Qualität des neuen Bildes (nur JPG) 0-100
$img->set_quality(95);
// Pfad zum Orginalbild
// Resize von .gif funktioniert erst mit der neuesten GD-Version (2.0.28 glaube)
$img->set_datei("temp/388665.jpg");
// Starte den Vorgang
// Das neue Bild wird direkt ausgegeben
$img->get_resize();
// Das neue Bild wird als $filename gespeichert
//$img->get_resize($filename);
?>
// Klasse initialisieren
$img = new resizer();
// Breite des neuen Bildes festlegen, wenn Breite > Höhe bei ratio = 1
$img->set_breit(150);
// Höhe des neuen Bildes festlegen, wenn Breite < Höhe bei ratio = 1
$img->set_hoch(100);
// Ratio 1 für an und 0 für aus
// 1 = Bild wird proportional geändert, also nicht verzerrt
// 0 = Bild wird mit den oben angegebenen Maßen erstellt
$img->set_ratio(1);
// Qualität des neuen Bildes (nur JPG) 0-100
$img->set_quality(95);
// Pfad zum Orginalbild
// Resize von .gif funktioniert erst mit der neuesten GD-Version (2.0.28 glaube)
$img->set_datei("temp/388665.jpg");
// Starte den Vorgang
// Das neue Bild wird direkt ausgegeben
$img->get_resize();
// Das neue Bild wird als $filename gespeichert
//$img->get_resize($filename);
?>
so dele
PS: Vorschläge für eine eventl. sinnvollere OOP bitte unbedingt hier loswerden. Ich habe leider immer noch so meine Schwierigkeiten mit dem Verstehen von OOP.
Startseite
Projekte
Portfolio
Stand-Alone & Anpassungen
devAScms Basis Edition
devAScms DJ Edition
devAScms Design Templates
Tutorials/Codeschnipsel
PHP
Kleinigkeiten
Cronjob.de - Monitor
Passwortgenerator
MehrwertsteuerRechner
Crypter
ByteRechner
Farbverläufer
HDDR-Umrechner
Timestamp-Rechner
devAS.de bei Twitter
Kontakt
Gästebuch
Impressum
