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);
}
}
InformationsquelleAutor Robert | 2012-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab!
Ich habe den create_thumb option auf FALSE, und verwendet die new_image parameter in der resize_img Methode. Der Effekt ist der gleiche, aber die built-in create_tumb-Funktion wird nicht verwendet.
Es ist ein bug IMHO, aber es funktioniert jetzt 🙂
InformationsquelleAutor Robert
Das problem mit der $config['source_image']
sehen, was Sie bekommen.
Wenn die Datei im Ordner "Bilder" im root-Ordner, die $config['source_image] = 'Bilder/'.$img.
Auch sicherstellen, dass alle die explodierende Funktionen zurückgeben den richtigen Dateinamen. (Rückkehr-und echo zu überprüfen).
1., beseitigen Datei nicht gefunden " - Fehler. Danach sehen Sie, welcher Fehler kommt.
InformationsquelleAutor itachi