Ich brauche für eine Bildergalerie Vorschaubilder im immer gleichen Format. Womit kann ich die Bilder beschneiden? Gibt es native PHP-Funktionen dazu?
Am Besten wäre natürlich, wenn nicht einfach ein Bereich in der Mitte ausgeschnitten wird, sondern die Grafik vorher eingepasst (heruntergerechnet) wird, damit der Abschnitt möglichst viel von der Originalgrafik darstellt.
was meinst du nun genau, erst eine große Grafik proportional verkleinern und dann ein Bildstück ausschneiden - oder einfach nur ein Bild immer verkleinern wenn eine bestimmte Breite und Höhe überschreitet ?
Erst eine Grafik auf Minimalgröße verkleinern. Dann den Rest abschneiden. Wenn die Grafik z.B. Hochformat ist, dann würde ich sie auf die nötige Breite verkleinern und dann die überschüssigen Teile oben und unten abschneiden. Ich brauche nämlich quadratische Thumbs.
Ich verwende eine kleine angepasste Klasse von mir die sollte dir Helfen
Zur Verwendung:
$obj = new img_opt(); $obj->max_width(180); $obj->max_height(180); $obj->image_path('./pfad/zum/orginal/Bild.jpg'); $obj->image_resize(); $obj->save('./pfad/zum/vorschau/bild.jpg');
Das Orginalbild wird dann auf die Maxwerte der Eigenschaft verkleinert, wenn das Bild eines der Werte überschreitet.
class img_opt {
var $max_width; var $max_height; var $path; var $img; var $new_width; var $new_height; var $mime; var $image; var $width; var $height; var $cropBlank = false;
function max_width($width) { $this->max_width = $width; } function max_height($height) { $this->max_height = $height; } function image_path($path) { $this->path = $path; } function get_mime() { $img_data = getimagesize($this->path); $this->mime = $img_data['mime']; } function create_image() { switch($this->mime) { case 'image/jpeg': $this->image = imagecreatefromjpeg($this->path); break;
case 'image/gif': $this->image = imagecreatefromgif($this->path); break;
} elseif (isset ($h) AND isset ($w)) { // get the smaller resulting image dimension if both height // and width are set and $constrain is also set $hx = (100 / ($sw / $w)) * .01; $hx = @round ($sh * $hx);
Ich brauche nämlich quadratische Thumbs.