| 

.NET C# Java Javascript Exception

2
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.
News:
23.03.2011
johny7 471 1 8
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 ?
Marco Rieger 23.03.2011
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.
johny7 23.03.2011
Guck meinen Post unten an, damit kannst du die Bilder erst proportinal verkleinern anschließend aus den Bild dein Quadrat schneiden ;) eg. imagecopy()
Marco Rieger 23.03.2011
3 Antworten
5
Zum reinen Beschneiden kannst du imagecopy nutzen.
Wenn du auch noch die Größe verändern willst: imagecopyresampled.

Beides Bestandteil der php-GD-Bibliothek.
23.03.2011
m.fuchs 1,8k 2 8
m.fuchs 1,8k 2 8
da warst um eine minute schneller als ich *g*
nabuchodonossor 23.03.2011
5
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;

case 'image/png':
$this->image = imagecreatefrompng($this->path);
break;
}
}
function image_resize()
{
$this->get_mime();
$this->create_image();
$this->width = imagesx($this->image);
$this->height = imagesy($this->image);
$this->set_dimension();
$image_resized = imagecreatetruecolor($this->new_width,$this->new_height);
imagecopyresampled($image_resized, $this->image, 0, 0, 0, 0, $this->new_width, $this->new_height,$this->width, $this->height);
#imagejpeg($image_resized,$this->path);
$this->image = $image_resized;
return $image_resized;
}


function set_dimension()
{
$w = $this->max_width;
$h = $this->max_height;

$sw = $this->width;
$sh = $this->height;


if (isset ($w) AND !isset ($h)) {
// autocompute height if only width is set
if($sw <= $w){
$w = $sw;
}

$h = (100 / ($sw / $w)) * .01;
$h = @round ($sh * $h);

} elseif (isset ($h) AND !isset ($w)) {
// autocompute width if only height is set
if($sh <= $h){
$h = $sh;
}

$w = (100 / ($sh / $h)) * .01;
$w = @round ($sw * $w);

} 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);

$wx = (100 / ($sh / $h)) * .01;
$wx = @round ($sw * $wx);

if ($hx < $h) {
$h = (100 / ($sw / $w)) * .01;
$h = @round ($sh * $h);
} else {
$w = (100 / ($sh / $h)) * .01;
$w = @round ($sw * $w);
}


}

$this->new_height = $h;
$this->new_width = $w;


}

function save($filename, $image_type=IMAGETYPE_JPEG, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,100);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename,100);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}

}
23.03.2011
Marco Rieger 820 8

Stelle deine Php-Frage jetzt!