我需要使用尺寸来使用PHP裁剪图像。
并以JPEG格式保存到本地。
我收到的尺寸是,
* Merge commit (missing file a.c)
/|
||
*| Add new file a.c again <- branchB
||
|* Remove files a.c <- branchA
||
*| Remove files a.c
||
\|
|
* Add new file a.c
|
|
...
我需要从图像的原始大小进行裁剪。
实施例。图像是1200x800,然后是实际尺寸的结果图像尺寸,而不是调整尺寸或任何尺寸。因为质量应该相同。
我如何使用这些参数来裁剪图像?
有可能吗?
答案 0 :(得分:0)
使用内置的 imagick class :
$image = realpath("/path/to/your/image.extension");
$cropped = realpath("/path/to/your/output/image.png");
$imObj = new Imagick();
$imObj->cropImage($width, $height, $offset_x, $offset_y);
$imObj->setImageFormat("png"); // this is unnesesary, you can force an image format with the extension of the output filename.
$imObj->writeImage($cropped);
对于无损输出,请使用具有无损编码的图像格式。 PNG非常适合这项工作,因为它是专为网络传输而设计的(因此是“Adam-7”隔行扫描)。 检查有关图形设计堆栈上无损图像格式的相关问题:
答案 1 :(得分:0)
您可以使用imageCopyResampled功能,该功能的设计非常精确。
$image = imagecreatefromjpeg($imageFileURL);
/***
* resize values (imported)
***/
$left = 82;
$top = 49;
$width = 660;
$height = 371;
/***
* Create destination image
***/
$newImage = imagecreatetruecolor($width,$height);
$saveToFile = "destintion filespace of image file.jpg"
if(imagecopyresampled($newImage, $image, //dest/source images
0, 0, // dest coordinates
$left, $top, // source coordinates
$width, $height, // size of area to paste to
$width, $height // size of area to copy from
)){
imagejpeg($newImage,$saveToFile,100); //zero compression saved to file
print "image resized ok!!";
}
新的fileimage将使用$width
,$height
指定的大小,并将通过$left
和$top
中给出的值偏离原始图像。从您的问题看,这看起来像你想要的。这不会调整大小或更改图像的压缩(直到您保存文件,然后可能自己设置这些细节)。