i have this image crop code th开发者_如何学Goat when the image does get cropped a black background is added in the picture. how can i remove it? thanks
$fldcategory = $_POST['category'];
$flname = $_FILES['upload']['name'];
$img_src = $_FILES['upload']['tmp_name'];
$thumb = "uploads/" . $flname;
$title = $_POST['title'];
// Open image
$img = imagecreatefromjpeg($img_src);
// Store image width and height
list($img_width, $img_height) = getimagesize($img_src);
$width = '800';
$height = '600';
// Create the new image
$new_img = imagecreatetruecolor($width, $height);
// Calculate stuff and resize image accordingly
if (($width/$img_width) < ($height/$img_height)) {
$new_width = $width;
$new_height = ($width/$img_width) * $img_height;
$new_x = 0;
$new_y = ($height - $new_height) / 2;
} else {
$new_width = ($height/$img_height) * $img_width;
$new_height = $height;
$new_x = ($width - $new_width) / 2;
$new_y = 0;
}
imagecopyresampled($new_img, $img, $new_x, $new_y, 0, 0,
$new_width, $new_height, $img_width, $img_height);
// Save thumbnail
if (is_writeable(dirname($thumb))) {
imagejpeg($new_img, $thumb, 100);
}
// Free up resources
imagedestroy($new_img);
imagedestroy($img);
Have a look at these functions:
- http://ch2.php.net/imagecolortransparent
- http://ch2.php.net/imagefill
You can define a color as transparent with the first function (you must allocate that color). Fill the new image with the transparent color before you paint the resized version on it. This will only make your black bg invisible and won't crop the image to the right size. (This is only a guess of what could help you)
精彩评论