... weil sie Fehler enthält.
Gibt es irgendeine Möglichkeit, herauszufinden, wo der Fehler ist?
Ich habe ein Skript für Thumbnails, was nach einem Serverupdate nicht mehr geht. Vorher lief noch alles einwandfrei. Ich stehe leider völlig auf dem Schlauch, da das Skript ursprünglich auch nicht von mir ist.
Wäre cool, wenn mir jemand auch nur ein bisschen auf die Sprünge helfen könnte
Vielen Dank!
Gibt es irgendeine Möglichkeit, herauszufinden, wo der Fehler ist?
Ich habe ein Skript für Thumbnails, was nach einem Serverupdate nicht mehr geht. Vorher lief noch alles einwandfrei. Ich stehe leider völlig auf dem Schlauch, da das Skript ursprünglich auch nicht von mir ist.
PHP:
<?php
class thumbnail
{
var $img;
var $fileInfo;
var $fullName;
var $newX;
var $newY;
var $quality;
var $orgX;
var $orgY;
// $data - (voller) Dateiname oder String (z.B. aus Datenbank)
function create($data)
{
$this->destroy();
if (file_exists($data)) {
$this->img = @ImageCreateFromJpeg($data);
$this->fileInfo = basename($data);
$this->fullName = $data;
} else {
$this->img = @ImageCreateFromString($data);
}
if (!$this->img) {
$this->destroy();
return false;
} else {
$this->orgX = ImageSX($this->img);
$this->orgY = ImageSY($this->img);
return true;
}
}
// Höhe des aktuellen Bildes im Container zurückgeben, false bei Fehler
function height()
{
if ($this->img) {
return ImageSY($this->img);
} else {
return false;
}
}
// Breite des aktuellen Bildes im Container zurückgeben, false bei Fehler
function width()
{
if ($this->img) {
return ImageSX($this->img);
} else {
return false;
}
}
// Qualität für Ausgabe setzen
function setQuality($quality = false)
{
if ($this->img && $quality) {
$this->quality = $quality;
} else {
return false;
}
}
// Thumbnail erzeugen
function resize($newX = false,$newY = false)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
$newX = $this->_convert($newX,$X);
$newY = $this->_convert($newY,$Y);
if (!$newX && !$newY) {
$newX = $X;
$newY = $Y;
}
if (!$newX) {
$newX = round($X / ($Y / $newY));
}
if (!$newY) {
$newY = round($Y / ( $X / $newX));
}
if ( ! $newimg = ImageCreateTruecolor($newX,$newY)) {
$newimg = ImageCreate($newX,$newY);
}
if ( ! ImageCopyResampled ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y)) {
ImageCopyResized ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y);
}
$this->img = $newimg;
return true;
} else {
return false;
}
}
// Schneidet ein Bild neu zu
/* Werte für cut (X stellt das Ergebnis dar)
$srcX
+---+--------------+
$srcY | | |
+---+---+ |
| | X | $newY | Ursprungsbild
| +---+ |
| $newX |
| |
+------------------+
*/
function cut($newX,$newY,$srcX = 0,$srcY = 0)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
$newX = $this->_convert($newX,$X);
$newY = $this->_convert($newY,$Y);
if (!$newX) {
$newX = $X;
}
if (!$newY) {
$newY = $Y;
}
if ( ! $newimg = ImageCreateTruecolor($X,$Y)) {
$newimg = ImageCreate($X,$Y);
}
ImageCopy ($newimg,$this->img,0, 0, 0, 0,$X,$Y);
ImageDestroy($this->img);
if ( ! $this->img = ImageCreateTruecolor($newX, $newY)) {
$this->img = ImageCreate($newX, $newY);
}
imagecopy ($this->img,$newimg, 0, 0,$srcX, $srcY, $newX, $newY);
ImageDestroy($newimg);
return true;
} else {
return false;
}
}
/* schneidet ein Teil mit Größe newX und newY an festgelegten Stellen des Bildes zu
$pos = Position welches Teil verwendet werden soll
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
*/
function autocut($newX,$newY,$pos = 5)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
$newX = $this->_convert($newX,$X);
$newY = $this->_convert($newY,$Y);
if (!$newX) {
$newX = $X;
}
if (!$newY) {
$newY = $Y;
}
switch ($pos) {
case 1:
$srcX = 0;
$srcY = 0;
break;
case 2:
$srcX = round(($X / 2)-($newX/2));
$srcY = 0;
break;
case 3:
$srcX = ImageSX($this->img) - $newX;
$srcY = 0;
break;
case 4:
$srcX = 0;
$srcY = round(($Y / 2)-($newY/2));
break;
case 5:
$srcX = round(($X / 2)-($newX/2));
$srcY = round(($Y / 2)-($newY/2));
break;
case 6:
$srcX = $X-$newX;
$srcY = round(($Y / 2)-($newY/2));
break;
case 7:
$srcX = 0;
$srcY = $Y - $newY;
break;
case 8:
$srcX = round(($X / 2)-($newX/2));
$srcY = $Y-$newY;
break;
case 9:
$srcX = $X- $newX;
$srcY = $Y - $newY;
break;
default:
$srcX = round(($X / 2)-($newX/2));
$srcY = round(($Y / 2)-($newY/2));
}
return $this->cut($newX,$newY,$srcX,$srcY);
} else {
return false;
}
}
// erzeugt ein Quadrat des Bildes mit Kantenlänge von $size
// ist das Bild nicht quadratisch kann mit $pos
// der Bildausschnitt festgelegt werden, Werte siehe function autocut
function cube($size,$pos = 5)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
if ($X > $Y)
{
$newX = false;
$newY = $size;
} elseif ($X < $Y) {
$newX = $size;
$newY = false;
} else {
$newX = $size;
$newY = $size;
}
if ($this->resize($newX,$newY)) {
return $this->autocut($size,$size,$pos);
} else {
return false;
}
} else {
return false;
}
}
// erzeugt ein Bild dessen größte Kantenlänge $size ist
function maxSize($size)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
if ($X > $Y)
{
$newX = $size;
$newY = false;
} elseif ($X < $Y) {
$newX = false;
$newY = $size;
} else {
$newX = $size;
$newY = $size;
}
return $this->resize($newX,$newY);
} else {
return false;
}
}
// erzeugt ein Bild dessen kleinste Kantenlänge $size ist
function minSize($size)
{
if ($this->img) {
$X = ImageSX($this->img);
$Y = ImageSY($this->img);
if ($X > $Y)
{
$newX = false;
$newY = $size;
} elseif ($X < $Y) {
$newX = $size;
$newY = false;
} else {
$newX = $size;
$newY = $size;
}
return $this->resize($newX,$newY);
} else {
return false;
}
}
// speichert das Bild als $fileName
// wird $filename angegeben muss es ein voller Dateiname mit Pfad sein
// ist $override wahr wird ein bestehendes Bild überschrieben, sonst nicht
// Rückgabe:
// true wenn geschrieben (oder überschrieben)
// false on error
// 0 wenn schon existiert (nur bei $override=false)
function save($fileName, $override = true)
{
if ($this->img) {
if (!file_exists($fileName) || $override) {
if (ImageJPEG($this->img,$fileName,$this->quality)) {
return true;
} else {
return false;
}
} else {
return 0;
}
} else {
return false;
}
}
// Gibt Bild an Browser aus (Ausgabe des Headers, Destroy aufrufen), beide optional
function output($sendHeader = true,$destroy = true)
{
if ($this->img) {
if ($sendHeader) {
header("Content-type: image/jpeg");
}
ImageJPEG($this->img,"",$this->quality);
if ($destroy) {
$this->destroy();
}
} else {
return false;
}
}
// Setzt die Werte in der Klasse frei und löscht Bild
function destroy()
{
if ($this->img) {
ImageDestroy($this->img);
}
$this->img = false;
$this->fileInfo = false;
$this->fullName = false;
$this->newX = false;
$this->newY = false;
$this->quality = 70;
$this->orgX = false;
$this->orgY = false;
}
// rechnet prozentuale Angaben in Pixel um, erwartet
// ist $value eine Prozentangabe z.B. (string) "50%" wird diese umgerechnet
// $full muss als 100% in Pixel angegeben werden
function _convert($value,$full = false)
{
if (strstr($value,"%")) {
$value = trim(str_replace ("%", "", $value));
$value = ($full / 100) * $value;
}
if ($value < 1 && $value !== false) {
$value = 1;
}
return $value;
}
}
if ($_GET['src'] == "images/dummy.jpg") {
$src = "images/dummy.jpg";
}
else {
$src = "bilder/".$_GET['src'];
}
if($_GET['mod'] == "s")
{
$thumbnail = new thumbnail();
$thumbnail->create("$src");
$thumbnail->setQuality(90);
$thumbnail->resize(90);
$thumbnail->autocut(60,60,5);
$thumbnail->output();
}
elseif($_GET['mod'] == "m") {
$thumbnail = new thumbnail();
$thumbnail->create("$src");
$thumbnail->setQuality(90);
$thumbnail->resize(170);
$thumbnail->autocut(105,105,5);
$thumbnail->output();
}
elseif(empty($_GET['mod'])) {
$thumbnail = new thumbnail();
$thumbnail->create("$src");
$thumbnail->setQuality(100);
$thumbnail->minSize(250);
$thumbnail->output();
}
elseif($_GET['mod'] == "xs") {
$thumbnail = new thumbnail();
$thumbnail->create("$src");
$thumbnail->setQuality(90);
$thumbnail->resize(35);
$thumbnail->autocut(25,25,5);
$thumbnail->output();
}
?>
Wäre cool, wenn mir jemand auch nur ein bisschen auf die Sprünge helfen könnte

Vielen Dank!