Pont erre írtam a napokban egy kis scriptet. Megkeresi legnagyobb területet az eredeti képben az új arányoknak megfelelően, majd kivágja azt és készít belőle újat. Nagyon béta, bőven van még rajta mit fejleszteni. Ja, és egyelőre csak a jpg-et méretezi át, de a switchnél be tudsz írni további fájltípusokat.
Templétből használhatod, így:
HTML kód:
<img src="/atmeretez.php?file=kep.jpg&h=90&w=180" alt="ne feledtezz meg az alt címről"/>
Ahol file a kép neve, h az új magasság és w az új szélesség.
Ez pedig az atmaretez.php:
PHP kód:
$filename=$_GET['file'];
$w=$_GET['w'];
$h=$_GET['h'];
$info=getimagesize('./images/'.$filename);
$orig_w=$info[0];
$orig_h=$info[1];
$mime=$info['mime'];
switch($mime)
{
case 'image/jpeg':
$old=imagecreatefromjpeg('./images/'.$filename);
$new=imagecreatetruecolor($w,$h);
break;
}
$orig_ar=$orig_w/$orig_h;
$new_ar=$w/$h;
if ($new_ar > $orig_ar)
{
$ratio=$w/$orig_w;
$tmp_h=$h/$ratio;
$crop_y=($orig_h-$tmp_h)/2;
imagecopyresampled ( $new , $old,
0, 0,
0, $crop_y,
$w, $h,
$orig_w, $tmp_h);
}
if ($new_ar < $orig_ar)
{
$ratio=$h/$orig_h;
$tmp_w=$w/$ratio;
$crop_x=($orig_w-$tmp_w)/2;
imagecopyresampled ( $new , $old,
0, 0,
$crop_x, 0,
$w, $h,
$tmp_w, $orig_h);
}
header("Content-Type: ".$mime);
$result=imagejpeg($new, NULL, 75);
Könyvjelzők