PHP kırpma görüntü

2 Cevap php

Aşağıdaki kod istediğim ne olduğu, iyi görüntüyü kırpar, ancak daha büyük görüntüler için, o kadar iyi çalışır wotn. 'Görüntünün uzaklaştırma' herhangi bir yolu var mı

I iyi sonuçlar her zaman alacağı, böylece Idealy i kırpma önce her görüntüyü kabaca aynı boyutta olması mümkün olacaktır

Code

<?php

$image = $_GET['src']; // the image to crop
$dest_image = 'images/cropped_whatever.jpg'; // make sure the directory is writeable

$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromjpeg($image);
$ims = getimagesize($image);
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
imagejpeg($img,$dest_image,90);
imagedestroy($img);
echo '<img src="'.$dest_image.'" ><p>';

2 Cevap

Eğer küçük oluşturmak için çalışıyorsanız, ilk imagecopyresampled(); kullanarak görüntüyü yeniden boyutlandırmak gerekir. Görüntünün küçük tarafında boyutu başparmak gelen tarafına eşit böylece görüntüyü yeniden boyutlandırmak gerekir.

Kaynak görüntü 1280x800px ve başparmak 200x150px Örneğin, sen 240x150px için görüntüyü yeniden boyutlandırmak gerekir ve daha sonra 200x150px bunu kırpmak. Görüntünün en-boy oranı değişmez böylece budur.

İşte küçük oluşturmak için bir genel formül:

$image = imagecreatefromjpeg($_GET['src']);
$filename = 'images/cropped_whatever.jpg';

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
   // If image is wider than thumbnail (in aspect ratio sense)
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
}
else
{
   // If the thumbnail is wider than the image
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);
imagejpeg($thumb, $filename, 80);

Bu test ama should iş değil.

EDIT

Şimdi test ve çalışma.

$image = imagecreatefromjpeg($_GET['src']);
$filename = 'images/cropped_whatever.jpg'

Ile değiştirilmesi gerekir:

$image = imagecreatefromjpeg($_GET['src']);

Sonra bu iş olacak!