ich habe mir folgendes script gemacht um bilder upzuloaden und thumbs zu erstellen.
die thumbs haben immer die breite von 126px. wenn das bild BREITER ALS HOCH ist dann ist das auch ok so.
dann wird die h�he einfach angepasst. das funktioniert auch pr�chtig.
wenn das bild aber H�HER ALS BREIT ist, dann wollte ich aus dem originalen bild einfach aus der vertikalen mitte
50px nach oben und 50px nach unten ausschneiden. das mit der vertikalen mitte haut auch super hin, nur bei der
breite hab ich einen fehler drin. er beh�lt hier die originalgr�sse bei.
sprich er verkleinert die originalbreite nicht auf die thumb_breite.
ihr k�nnt das auch gern ausprobieren: http://www.msgu.at/test/test.php
wo hab ich denn da den fehler drin?
die thumbs haben immer die breite von 126px. wenn das bild BREITER ALS HOCH ist dann ist das auch ok so.
dann wird die h�he einfach angepasst. das funktioniert auch pr�chtig.
wenn das bild aber H�HER ALS BREIT ist, dann wollte ich aus dem originalen bild einfach aus der vertikalen mitte
50px nach oben und 50px nach unten ausschneiden. das mit der vertikalen mitte haut auch super hin, nur bei der
breite hab ich einen fehler drin. er beh�lt hier die originalgr�sse bei.
sprich er verkleinert die originalbreite nicht auf die thumb_breite.
ihr k�nnt das auch gern ausprobieren: http://www.msgu.at/test/test.php
wo hab ich denn da den fehler drin?
PHP-Code:
<?php
$absolute_path = 'C:/Programme/xampp/htdocs/projects/test/bilder/'; // absoluter filepfad
$http_path = 'http://localhost/projects/test/bilder/'; // http pfad
if(isset($_POST['submit']) && !empty($_FILES['picture']['name']) && $_FILES['picture']['type'] === 'image/jpeg') {
$img_orig = $_FILES['picture']['name'];
$img_tmp = $_FILES['picture']['tmp_name'];
if(!move_uploaded_file($img_tmp, $absolute_path.$img_orig)) {
echo 'Es trat ein Fehler auf!
';
exit;
}
chmod($absolute_path.$img_orig, 0777);
// masse berechnen
$size = getimagesize($absolute_path.$img_orig);
$orig_width = $size[0];
$orig_height = $size[1];
$thumb_width = 126; // h�lfte: 63
$thumb_height = 94; // h�lfte: 47
$img_thumb_name = 'thumb_'.$img_orig;
if($orig_width < $thumb_width) {
$thumb_width = $orig_width;
}
// schauen ob das picture h�her als breit ist
if($orig_height > $orig_width) {
// picture erstellen und ausschnitt von original kopieren
$src_y = ($orig_height/2) + ($thumb_height/2);
$source = imagecreatefromjpeg($absolute_path.$img_orig);
$destination = imagecreatetruecolor($thumb_width,$thumb_height);
imagecopymerge($destination, $source, 0, 0, 0, $src_y, $orig_width, $orig_height, '100');
// imagecopymerge(res. dst_im, res. src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)
imagejpeg($destination, $absolute_path.$img_thumb_name);
imagedestroy($source);
imagedestroy($destination);
chmod($absolute_path.$img_thumb_name, 0777);
} else {
$scalefactor = $orig_width/$thumb_width;
$thumb_height = intval($orig_height/$scalefactor);
// picture erstellen und von original kopieren
$source = imagecreatefromjpeg($absolute_path.$img_orig);
$destination = imagecreatetruecolor($thumb_width,$thumb_height);
imagecopyresized($destination, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $orig_width, $orig_height);
// imagecopyresized(res. dst_im, res. src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)
imagejpeg($destination, $absolute_path.$img_thumb_name);
imagedestroy($source);
imagedestroy($destination);
chmod($absolute_path.$img_thumb_name, 0777);
}
echo '[img]'.$http_path.$img_thumb_name.'[/img]
';
echo '[url="test.php"]Zur�ck[/url]';
} else {
?>
<form enctype="multipart/form-data" action="<? echo 'test.php'; ?>" method="post">
<input name="picture" type="file">
<input type="submit" name="submit" value="Upload">
</form>
<?php
}
?>
Kommentar