Portal > Foren > PHP > PHP-Programmierung > PHP Bilder verkleinern
Antwort
 
Themen-Optionen
Alt 13.06.2006, 09:06 Nach oben    #1
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard PHP Bilder verkleinern

jetzt denkt wahrscheinlich gleich jeder nur RTFM !!!!!!

Naja also wie ich das mit php + gdlib realisiere ist mir klar, mir gehts um ein anderes Problem das ich habe, wer sich mal in den beispielgallerien:

http://www.robo47.net/Bilder/Urlaub-...ebsn-und-Jens/
http://www.robo47.net/Bilder/Noise-P...Festival-2006/

die Bilder anschaut wird feststellen, dass sie extrem hässliche weise punkte bekommen, klar php ersetzt keine sauber mit Photoshop verkleinerten und nachgeschärften Bilder, aber ich wollte eigentlich schon das Maximum aus den Bildern rausholen, zu meinem Workflow:

Bilder kommen als .CR2 (Canon-RAW-Format) aus meiner 350D,
danach wandern sie in den Pixmantec RAW Shooter.
Dort mache ich weisabgleich, paar anpassung und dann wandert das bild unnachgeschärft direkt in ne jpeg-datei (Auflösung 3471*2311).
dann wird mit irfanview im batch-prozess die komplette jpeg-serie genommen und auf 1024*XXX verkleinert und hochgeladen, mein "galleriescript" erstellt dann die thumbnails davon (200*300) und durch das viele verkleinern, müssten die bilder wohl etwas mehr/besser nachgeschärft werden und da es eh ne digitalen spiegelreflex ist und die bilder als RAW schon komplett ungeschärft sind, wäre wohl deshalb noch etwas mehr handlungsbedarf.

gibt es hierzu irgendwelche tips, wie man den workflow verbessern kann ? Photoshop kann ich mir momentan nicht leisten, den gibts erst während dem studium als studentenversion, da ist das ganze finanzierbar, der momentane php-code sieht in ungefähr so aus:

PHP-Code:
function createthumbnail($file//Erzeugt Thumbnail
{
    global 
$settings,$currentdir,$rotated;
    
$sizex $settings['width'];
    
$sizey $settings['height'];
    
    
// ein GD-Objekt vom übergebenen Bild erstellen 
    
$image['gdsourceimage'] = ImageCreateFromJPEG ($file) or die ("ERROR HAT NED GEFUNZT");
    
    
// die Größen auslesen
    
$image['width'] = imagesx($image['gdsourceimage']);
    
$image['height'] = imagesy($image['gdsourceimage']);
    
/*
    IF($image['width'] < $image['height'])
    {
        //Drehen
        
        $rotated++;

        $image['maxsize'] = $image['height'];
        
        // Das Tempbild erzeugen
        $image['gdtempimage'] = imagecreatetruecolor($image['maxsize'],$image['maxsize']);
        
        // Das Quellbild in das Tempbild kopieren
        ImageCopy($image['gdtempimage'],$image['gdsourceimage'],0,0,0,0, $image['width'],$image['height']);
        
        // Das Tempbild drehen
        $image['gdtempimage'] = imagerotate($image['gdtempimage'],90,0);
        
        // Das Zielbild erstellen;
        $image['gdtargetimage'] = imagecreatetruecolor($image['height']-2,$image['width']-2);
        
        // Das gedrehte Bild in das Zielbild kopieren
        imagecopy($image['gdtargetimage'],$image['gdtempimage'],0,0,0,($image['maxsize']-$image['width']), $image['height'],$image['width']);

    }
    ELSE
    {*/
        
$image['gdtargetimage']=$image['gdsourceimage'];
    
#}

    /*Thumbnail erstellen*/

    
    //Zielgröße festlegen
    
$image['width'] = imagesx($image['gdtargetimage']);
    
$image['height'] = imagesy($image['gdtargetimage']);
    
$factor $image['width']/$image['height'];
    
$image['targetsizey'] = round($settings['width']/$factor);

    
$image['gdlasttargetimage'] = imagecreatetruecolor($settings['width'], $image['targetsizey']);
    
imagecopyresized $image['gdlasttargetimage'], $image['gdtargetimage'], 0000$settings['width'] ,$image['targetsizey'], $image['width'], $image['height']);

    
// Bild in Datei speichern
    
$file2 pathinfo($file);
    
$lastoutput imagejpeg($image['gdlasttargetimage'],$settings['tnsubdir']."/".$settings['tnprefix'].$file2['basename'],100);



Bevor mich jemand wegen dem code haut, der ist wirklich noch aus den anfängen meiner php-laufbahn, also schon mindestens 3-4 jahre alt, aber er tut !!
Der Teil zum drehen der Bilder hab ich bewußt momentan rausgenommen.


mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 10:09 Nach oben    #2
 
Registriert seit: 10.11.2005
Ort: Schweiz -> Basel
Beiträge: 208
Standard

Mal ImageMagick probiert?
think ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 10:39 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

Zitat:
Zitat von think
Mal ImageMagick probiert?
bis jetzt noch nicht, wollte ich irgendwann mal .... aber das script sollte nicht nur bei mir auf der kiste laufen, sondern auch auf 2 weiteren webspaces wo leider kein imagemagick vorhanden ist.

hat imagemagick was bildqualität angeht wirklich einen vorsprung ? ich hab schon öfters gelesen, dass leute meinen es wäre besser, aber nen wirklichen vergleich hab ich irgendwie nie zu gesicht bekommen, klar imagemagick unterstütz viel mehr formate und einiges mehr an funktionen hat es

aber ich glaub ich compiliere mir wohl am langen wochenende mal ein php mit imagemagick und schaus mir an. was ist eigentlich zu bevorzugen, die php-erweiterung oder die nutzung von imagemagic via shell ? (klar shell ist ein höheres sicherheitsproblem, dessen bin ich mir bewußt).

mfg
robo47

Geändert von robo47 (13.06.2006 um 10:45 Uhr).
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 11:58 Nach oben    #4
 
Registriert seit: 10.11.2005
Ort: Schweiz -> Basel
Beiträge: 208
Standard

Wenn mich nicht alles täuscht, läufts bei uns über die Shell. Kann dir dazu aber nix genaueres sagen, das sprengt meine Zuständigkeiten. (Zum Glück *g*)

Einen realistischen Qualitätsvergleich kann ich dir auch nicht bieten, allerdings hatten wir nie solche Probleme wie du sie oben beschreibst. Die Qualität stimmt. Nicht Perfekt, aber "Webgemäss". Und wie du selbst schon angedeutet hast ist der Funktionsumfang um einiges Grösser als mit der GD-Lib.
think ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 12:35 Nach oben    #5
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

hmm dann werde ich wohl doch mal compilieren müssen und dann testen
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:02 Nach oben    #6
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

ähm ich bin blind... wo sind da bitte häßliche weiße punkte auf den bildern?
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:09 Nach oben    #7
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

nehmen wir: http://www.robo47.net/Bilder/Urlaub-...01_new.jpg.jpg als beispielbild, schau mal an den rändern der orangenen jacke, die hellen flecken, finde die stechen schon sehr ins gesicht, wirkt dadurch extrem pixelig
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:11 Nach oben    #8
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Das Bild ist extrem pixelig. Bisschen Antialiasing würde dem Bild auch gut tun. Aber geht das mit PHP?
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:14 Nach oben    #9
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

hmm eigentlich warte ich noch auf ne antwort von cixx88
der php-grafik-guru
aber ich werde am we wirklich mal testen wenn ich dazukomme wie sich imagemagic schlägt und notfalls die gallerien der anderen leute bei mir laufen lassen, vieleicht lässt sich das ausgangsmaterial auch verbessern, dass dann bessere ergebnisse rauskommen ....
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:18 Nach oben    #10
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.203
Standard

mich würde interessieren, ob 'meine' Funktion das auch so pixelig macht...

ggf. magst du das ja mal ausprobieren?
thumbnails erstellen - kleine Funktion
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (27.06.2007 um 12:57 Uhr).
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 15:51 Nach oben    #11
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

argl ich seh grad woran es liegen könnte, mir ist im überfliegen meines codes nicht aufgefallen, dass das script noch mit imagecopyresized arbeitet, imagecopyresampled sollte soweit ich mich erinnern kann besser ergebnisse bringen .... aber werde ich später mal testen
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 16:07 Nach oben    #12
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

also generell sollte es mit der gblib schon möglich sein saubere thumbnails zu produzieren.
kann es vieleicht sein das die thumbnail bilder sehr klein sind und im img tag großer gezogen werden.

ich hab mal eine eigene thumbnail klasse geschrieben, mit deren qualitöt ich zufrieden bin, zumindest sind die bilder nicht so pixelig wie deine.

wenn ich später zuhause bin werde ich den code mal posten.

edit:

letzten post überlesen...
daran wird es wohl liegen. imagecopyresized musst du bei älteren gd versionen kleiner als 2 verwenden...
beny_mcde ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 16:13 Nach oben    #13
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

ich werde halt alt .... wird zeit, dass ich ne KI in meine kiste einbaue die mir wenn sie schlechten code oder veralteten code entdeckt elektroschocks gibt
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 23:08 Nach oben    #14
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Hmmm, hab das Thread erst jetzt gelesen (zuviel Arbeit)

Mögliche Ursachen können auch der Skalierungsfaktor des Bildes sein.
Klingt zwar erstmal ganz lustig, ist aber durchaus auch ein Problem.

ImageCopyResized() hat ganz einfach Probleme mit den proportionalen Verkleinern von Bildern.
Ganz extrem wird es, wenn das Bild mit krummen Werten verkleinert wird.
Z.B. von 640x480 auf 325x243 oder sowas in der Art.

ImageCopyResampled() kommt damit einfach besser zurecht, und damit sehen die Bilder dann auch besser aus.

Ok, das Problem ist zwar gelöst worden, demnach kann mein Posting nach Nachtrag betrachtet werden
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.06.2006, 23:27 Nach oben    #15
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

okay wieder was gelernt
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2006, 00:46 Nach oben    #16
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

wie im letzen beitrag von mir schon gesagt hier mal der code zu meiner thumbnailklasse.
du kannst sie für deine zwecke verwenden oder dir von ihr ein paar anregungen geben lassen.

hab gerade noch ein paar fehler entdeckt und ausgemerzt,
also wer noch was findet oder anregungen hat, nur her mit.

PHP-Code:
<?
/**
 * Class to create thumbnail pictures
 * @author Benjamin Seibert
 * @version 1.5
 * 
 */

class ThumbnailFactory {

    protected $imgDir = './';

    protected $thumbDir = './';
    protected $thumbWidth = 145;
    protected $thumbHeight = 145;
    protected $thumbType = ThumbnailFactory :: PNG;
    protected $thumbQuality = 80;

    protected $centerHorizontal = false;
    protected $centerVertical = false;

    protected $bgColor = array ('r' => 255, 'g' => 0, 'b' => 0);

    protected $useCopyResized = false;
    protected $useTruecolorImages = true;

    const GIF = 'gif';
    const JPG = 'jpg';
    const PNG = 'png';

    function createThumbnail($imgName) {

        $sourceFile = $this->imgDir.'/'.$imgName;

        if (!file_exists($sourceFile)) {
            throw new Exception('Cannot create thumbnail for "'.$imgName.'" : File not found!');
        }

        $source = $this->loadSourceImage($sourceFile);
        $target = $this->createThumbnailImage();

        list ($sourceW, $sourceH) = getimagesize($sourceFile);
        list ($sourceX, $sourceY, $sourceW, $sourceH) = $this->calculateClipping($sourceW, $sourceH);

        $this->doCopy($source, $target, $sourceX, $sourceY, $sourceW, $sourceH);

        $thumbName = $this->saveThumbnailImage($target, $imgName);

        imagedestroy($source);
        imagedestroy($target);

        return $thumbName;
    }
    function generateThumbnailName($imgName) {
        $type = strtolower(substr(strrchr($imgName, '.'), 1));
        $modifyer = '';
        if($this->centerHorizontal){
         $modifyer.='H';
        }
        if($this->centerVertical){
         $modifyer.='V';
        }
        if($this->thumbType==ThumbnailFactory::JPG){
         $modifyer.='Q'.$this->thumbQuality;    
        }
        $newName = substr($imgName, 0, strlen($imgName) - (strlen($type) + 1)).'_'.$type.'_'.$modifyer.'_'.$this->thumbWidth.'x'.$this->thumbHeight.'.'.$this->thumbType;
        return $newName;
    }

    private function doCopy($source, $target, $sourceX, $sourceY, $sourceW, $sourceH) {

        if ($this->useCopyResized == true) {
            return imagecopyresized($target, $source, 0, 0, $sourceX, $sourceY, $this->thumbWidth, $this->thumbHeight, $sourceW, $sourceH);
        } else {
            return imagecopyresampled($target, $source, 0, 0, $sourceX, $sourceY, $this->thumbWidth, $this->thumbHeight, $sourceW, $sourceH);
        }
    }

    private function saveThumbnailImage($img, $name) {

        $newName = $this->generateThumbnailName($name);
        $file = $this->thumbDir.'/'.$newName;

        switch ($this->thumbType) {
            case ThumbnailFactory :: JPG :
                imagejpeg($img, $file, $this->thumbQuality);
                break;

            case ThumbnailFactory :: PNG :
                imagepng($img, $file);
                break;

            case ThumbnailFactory :: GIF :
            default :
                imagegif($img, $file);
                break;
        }
        return $newName;
    }
    private function loadSourceImage($sourceFile) {

        $type = strtolower(substr(strrchr($sourceFile, '.'), 1));
        $source = null;

        switch ($type) {
            case 'jpg' :
            case 'jpeg' :
                $source = imagecreatefromjpeg($sourceFile);
                break;
            case 'png' :
                $source = imagecreatefrompng($sourceFile);
                break;
            case 'gif' :
                $source = imagecreatefromgif($sourceFile);
                break;
        }

        return $source;
    }
    private function createThumbnailImage() {
        if ($this->useTruecolorImages) {
            return imagecreatetruecolor($this->thumbWidth, $this->thumbHeight);
        } else {
            return imagecreate($this->thumbWidth, $this->thumbHeight);
        }
    }

    private function calculateClipping($w, $h) {

        $nw = $w;
        $nh = $h;
        $nx = 0;
        $ny = 0;

        if ($w > $h) {
            if ($this->thumbWidth < $this->thumbHeight) {
                $nw = ($h * $this->thumbWidth) / $this->thumbHeight;
            }
            elseif ($this->thumbWidth > $this->thumbHeight) {
                $nh = ($this->thumbHeight * $w) / $this->thumbWidth;
            } else {
                $nw = ($h * $this->thumbWidth) / $this->thumbHeight;
            }
        }
        elseif ($w < $h) {
            if ($this->thumbWidth < $this->thumbHeight) {
                $nw = ($h * $this->thumbWidth) / $this->thumbHeight;
            }
            elseif ($this->thumbWidth > $this->thumbHeight) {
                $nh = ($this->thumbHeight * $w) / $this->thumbWidth;
            } else {
                $nh = ($this->thumbHeight * $w) / $this->thumbWidth;
            }
        }

        if ($this->centerHorizontal && $w != $nw) {
            $nx = ($w / 2) - ($nw / 2);
        }

        if ($this->centerVertical && $h != $nh) {
            $ny = ($h / 2) - ($nh / 2);
        }

        return array ($nx, $ny, $nw, $nh);
    }

    function setImageDirectory($dir) {
        $this->imgDir = $dir;
    }
    function setThumbnailDirectory($dir) {
        $this->thumbDir = $dir;
    }
    function setThumbnailSize($w, $h) {
        $this->thumbWidth = $w;
        $this->thumbHeight = $h;
    }
    function setCenterClipping($horizontal, $vertical) {
        $this->centerHorizontal = $horizontal;
        $this->centerVertical = $vertical;
    }
    function setThumbnailType($type) {
        $this->thumbType = $type;
    }
    function setThumbnailQuality($quality) {
        $this->thumbQuality = $quality;
    }
    function setUseCopyResized($flag) {
        $this->useCopyResized = $flag;
    }
    function setUseTruecolorImages($flag) {
        $this->useTruecolorImages = $flag;
    }
    function thumbnailExists($image) {
        $thumb = $this->generateThumbnailName($image);
        return file_exists($this->thumbDir.'/'.$thumb);
    }

    static function newInstance() {
        $version = ThumbnailFactory :: getGDVersion();
        $factory = new ThumbnailFactory();

        if ($version < 2) {
            $factory->setUseCopyResized(true);
            $factory->setUseTruecolorImages(false);
        }
        return $factory;
    }

    static function getGDversion() {
        $gd_version_number = null;

        if ($gd_version_number === null) {
            ob_start();
            phpinfo(8);
            $module_info = ob_get_contents();
            ob_end_clean();
            $matches = array ();
            if (preg_match("/\bgd\s+version\b[^\d\n\r]+?([\d\.]+)/i", $module_info, $matches)) {
                $gd_version_number = $matches[1];
            } else {
                $gd_version_number = 0;
            }
        }

        return (int) $gd_version_number;
    }

}
?>
und hier noch eine beispiel verwendung die einen ordner ausließt und für die bilder in ihm thumbnails generiert und diese ausgibt.

PHP-Code:
<?php
// thumbnail klasse einbinden
require_once('ThumbnailFactory.class.php');

// neue instanz erstellen
$fac ThumbnailFactory::newInstance();

//bild verzeichnis setzen
$fac->setImageDirectory('./images');
//thumbnail verzeichnis setzen
$fac->setThumbnailDirectory('./images/thumbs');

//thumbnail typ setzen, verfügbar sind JPG,GIF und PNG
$fac->setThumbnailType(ThumbnailFactory::JPG);
// thumbnail qualität (nur bei JPG)
$fac->setThumbnailQuality(50);

//bildausschnitt horizontal und vertikal zentrieren
$fac->setCenterClipping(true,true);

// thumbnailgröße setzen
$fac->setThumbnailSize(50,150);

// optionaler legacy support für gd version 1
/*
$fac->setUseCopyResized(true);
$fac->setUseTruecolorImages(false);
*/

$content '<html><body>';
$dir dir('./images');

while(
$img $dir->read()){
 if(
is_file('./images/'.$img)){
   
   
// wenn kein thumbnail existiert, erzeugen
   
if(!$fac->thumbnailExists($img)){       
    
$fac->createThumbnail($img);
   }
   
   
// namen des thumbnails generieren
   
$thumbName $fac->generateThumbnailName($img);
   
   
$content.='<img src="images/thumbs/'.$thumbName.'" />'."\n";
 }    
}

$dir->close();

$content.='</body></html>';

echo 
$content;

?>
edit:

noch ein kleines update, hatte nicht beachtet das truecolor images auch ers ab gd v 2 verfügbar sind. jetzt sollte es aber gehen.

Geändert von beny_mcde (14.06.2006 um 13:51 Uhr).
beny_mcde ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2006, 07:45 Nach oben    #17
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Nicht schlecht, aber alles zu PHP5 bezogen
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2006, 13:47 Nach oben    #18
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

ist aber kein thema...
das ist einfach zu konvertieren.

einfach bei den variablen alle protected und privates durch var ersetzen.
und bei den methoden das static und das private wegmachen.
dann sollte es laufen.
schreib meine klassen meistens so das man sie recht leicht nach php4 portieren kann.

edit:

const muss natürlich auch durch var ersetzt werden...
beny_mcde ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2006, 15:30 Nach oben    #19
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.177
Standard

also das resampled hat die gehassten punkte und kannten nicht hinterlassen da bin ich glücklich, jetzt muss nur das ausgangsmaterial noch etwas verbessert werden

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2006, 17:17 Nach oben    #20
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Bei diversen Versuchen habe ich auch festgestellt, dass die GDlib generell nicht sauber arbeitet.
Wird den meisten auch nicht auffallen
Man kann es halbwegs umgehen, wenn man bei JPEG-Bilder die Bilder erst mit voller Qualtität abspeichert und dann daraus ein Thumnail macht.

ImageCopyResized() kann auch benutzt werden, solange man nur 1:1 ein Bild oder Bildauschnitt kopiert.
Blos nicht verwenden, wenn man etwas verkleinern will
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen