我需要首先按比例调整图像大小(宽度是重要的尺寸),然后裁剪任何多余的高度,然后将新版本存储在目录中。
我设法调整大小,我最终获得了目录中宽度正确的图像。有些人在这里我需要裁掉多余的高度。但我无法解决我需要做的事情。我是否需要以某种方式使用copyimageresampled。我想裁剪所有图像,使它们的高度为50px。
以下是我到目前为止调整大小的内容:
$src = ImageCreateFromJpeg($upfile);
$dst = ImageCreateTrueColor($tn_width, $tn_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
ImageJpeg($dst, 'images/' . $_FILES['image']['name']);
答案 0 :(得分:2)
这就是我追求的目标。一个2阶段的过程。诀窍是将图像调整为临时图像,然后裁剪它:
http://salman-w.blogspot.com/2009/04/crop-to-fit-image-using-aspphp.html
答案 1 :(得分:0)
这可能有助于您在调整大小后进行裁剪:911-need-code-help
<?php
//----------------------------------------------------------------
// Crop-to-fit PHP-GD
// Revision 2 [2009-06-01]
// Corrected aspect ratio of the output image
//----------------------------------------------------------------
define( 'DESIRED_IMAGE_WIDTH', 150 );
define( 'DESIRED_IMAGE_HEIGHT', 150 );
$source_path = $_FILES[ 'Image1' ][ 'tmp_name' ];
//
// Add file validation code here
//
list( $source_width, $source_height, $source_type ) = getimagesize( $source_path );
switch ( $source_type )
{
case IMAGETYPE_GIF:
$source_gdim = imagecreatefromgif( $source_path );
break;
case IMAGETYPE_JPEG:
$source_gdim = imagecreatefromjpeg( $source_path );
break;
case IMAGETYPE_PNG:
$source_gdim = imagecreatefrompng( $source_path );
break;
}
$source_aspect_ratio = $source_width / $source_height;
$desired_aspect_ratio = DESIRED_IMAGE_WIDTH / DESIRED_IMAGE_HEIGHT;
if ( $source_aspect_ratio > $desired_aspect_ratio )
{
//
// Triggered when source image is wider
//
$temp_height = DESIRED_IMAGE_HEIGHT;
$temp_width = ( int ) ( DESIRED_IMAGE_HEIGHT * $source_aspect_ratio );
}
else
{
//
// Triggered otherwise (i.e. source image is similar or taller)
//
$temp_width = DESIRED_IMAGE_WIDTH;
$temp_height = ( int ) ( DESIRED_IMAGE_WIDTH / $source_aspect_ratio );
}
//
// Resize the image into a temporary GD image
//
$temp_gdim = imagecreatetruecolor( $temp_width, $temp_height );
imagecopyresampled(
$temp_gdim,
$source_gdim,
0, 0,
0, 0,
$temp_width, $temp_height,
$source_width, $source_height
);
//
// Copy cropped region from temporary image into the desired GD image
//
$x0 = ( $temp_width - DESIRED_IMAGE_WIDTH ) / 2;
$y0 = ( $temp_height - DESIRED_IMAGE_HEIGHT ) / 2;
$desired_gdim = imagecreatetruecolor( DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT );
imagecopy(
$desired_gdim,
$temp_gdim,
0, 0,
$x0, $y0,
DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT
);
//
// Render the image
// Alternatively, you can save the image in file-system or database
//
header( 'Content-type: image/jpeg' );
imagejpeg( $desired_gdim );
//
// Add clean-up code here
//
?>
答案 2 :(得分:-1)
裁剪就像使用 GD
调整大小一样一些示例代码:
// Original image
$filename = 'someimage.jpg';
// Get dimensions of the original image
list($current_width, $current_height) = getimagesize($filename);
// The x and y coordinates on the original image where we
// will begin cropping the image
$left = 50;
$top = 50;
// This will be the final size of the image (e.g. how many pixels
// left and down we will be going)
$crop_width = 200;
$crop_height = 200;
// Resample the image
$canvas = imagecreatetruecolor($crop_width, $crop_height);
$current_image = imagecreatefromjpeg($filename);
imagecopy($canvas, $current_image, 0, 0, $left, $top, $current_width, $current_height);
imagejpeg($canvas, $filename, 100);
您可以定义裁剪宽度&amp;高度,应该全部设定。它只不过是你能看到的调整大小。
参考:http://www.johnconde.net/blog/cropping-an-image-with-php-and-the-gd-library/