Codeigniter Bildbearbeitung Klasse : Resize und Crop auf mehrere Dateien

Ich bin kämpfen, um die CodeIgniter-Bildbearbeitung richtig funktioniert. Entweder ist es ein bug oder ich bin einfach nicht es zu sehen. Ich hoffe jemand kann mir helfen. Vielen Dank im Voraus!

Auf dem Skript: ich möchte thumbnails zu erstellen (176w x 132h). Die input-Bilder sind in verschiedenen Größen und Verhältnisse. Um immer diese Größe habe ich zuerst die Größe ändern, passen Sie die maximale Breite oder Höhe (je nach Ausrichtung der Bilder) und dann die Ernte in die Mitte.
Ich habe versucht, es zu tun alles in 1 Methode. Das hat nicht funktioniert, so habe ich zwei separate Methoden.

resize_img() 

und

crop_img().

Wenn ich resize_img() auf 3 verschiedene Dateien, es funktioniert. Wenn nach, dass ich crop_img() auf diese thumbnails die 1. Methode erstellt, es funktioniert. Wenn ich die beiden verbinden, oder verwenden Sie Sie nach einem anderen, gibt es nicht.
Ich habe versucht $this->image_lib->clear();, lösche die config-Dateien. Ich habe sogar zwei config-Dateien, nur um sicher zu sein.

Ich bin immer verschiedenen alle Art von Fehler von GD2, aber das problem ist, dass nach resize_img() erzeugt das thumbnail, das crop_img() nicht zuschneiden. Nach, dass es nach Süden geht, und die nächsten Bilder nicht geöffnet werden können. Schreiben premissions überprüft werden, sowohl auf Ordner und Dateien.

Nicht in der Lage, das Bild zu speichern. Bitte stellen Sie sicher, dass die Bild-und Datei
Verzeichnis beschreibbar sind. Der Pfad zum Bild ist nicht korrekt. Ihre
server bietet keine Unterstützung für den GD-Funktion benötigt werden, um diese Art
der Bild.

Vollständige code:

<?PHP

class Imagetest extends MY_Controller {

function __construct()
{
    parent::__construct();
    $this->load->library('image_lib');
}

function index()
{
    $testimg1 = 'uploads/test/1.png';
    $testimg2 = 'uploads/test/2.png';
    $testimg3 = 'uploads/test/3.png';

    $this->resize_img($testimg1);
    $this->crop_img($testimg1);

    $this->resize_img($testimg2);
    $this->crop_img($testimg2);

    $this->resize_img($testimg3);
    $this->crop_img($testimg3);
}


function image_thumb_name($img = null)
{
    if(!empty($img)) {
        $exploded = explode('.', $img);
        return $exploded['0'] . '_thumb.' . $exploded['1'];
    }
}

function get_axis($img)
{
    //Default values
    $output['x_axis'] = 0;
    $output['y_axis'] = 0;

    //Settings
    $config['height'] = 132;
    $config['width']  = 176;

    if ($img_dim = getimagesize($img)) {
        list($thumb_width, $thumb_height) = $img_dim;
    } else {
        echo '<h1> ERROR HERE TOO</h1>';
        return false;
    }

    if ($thumb_width > $config['width']) {

        $output['x_axis'] = (($thumb_width - $config['width']) / 2) ;               

    } else if ($thumb_height > $config['height']) {

        $output['y_axis'] = (($thumb_height - $config['height']) / 2);
    }       
    return $output;
} 

function resize_img($img) 
{
    $config = array();
    echo 'Processing: '. $img .'<br/>';  //Debug

    if ($img_dim = getimagesize($img)) {
        list($image_width, $image_height) = $img_dim;
    } else {
        echo '<h1> ERROR HERE </h1>';
    }

    //create a thumbnail
    $config['image_library'] = 'GD2';
    $config['source_image'] = $img;
    $config['quality'] = 100;
    $config['height'] = 132;
    $config['width'] = 176;
    $config['create_thumb']  = TRUE;
    $config['maintain_ratio']= TRUE;
    $config['master_dim'] = ($image_width > $image_height) ? 'height' : 'width';
    $this->image_lib->initialize($config);

    if (!$this->image_lib->resize()) { 
        echo $this->image_lib->display_errors();
    }

    echo '<img src="../'.$this->image_thumb_name($img).'" /> <br/>'; //Debug

    $this->image_lib->clear();
    unset($config);
}   




function crop_img($img)
{
    $config2 = array();

    //Crop that thumbnail
    $config2['image_library'] = 'GD2';
    $config2['quality'] = 100;
    $config2['height'] = 132;
    $config2['width'] = 176;
    $config2['source_image']  = $this->image_thumb_name($img);
    $axis = $this->get_axis($config2['source_image']);
    $config2['x_axis'] = $axis['x_axis'];
    $config2['y_axis'] = $axis['y_axis'];
    $config2['maintain_ratio'] = FALSE;
    $config2['create_thumb'] = FALSE;
    $this->image_lib->initialize($config2);

    if (!$this->image_lib->crop()) { 
        echo $this->image_lib->display_errors(); 
    }

    echo '<img src="../'.$config2['source_image'].'" /> <br/>'; //Debug

    $this->image_lib->clear();
    unset($config2);
}

}
Ich bin noch nicht in der Lage, diese zu arbeiten. Irgendwelche Ideen?

InformationsquelleAutor Robert | 2012-01-26

Schreibe einen Kommentar