我有分辨率为720x1280的图像,我需要将它们存储在分辨率为800x1500的服务器上。 由于720x1280增加到1500高度,分辨率为844x1500,我还需要裁剪图像,从左侧和右侧移除22个像素。
现在我有了这个:
var stringlist = new List<string> { "RGBI1red", "green", "RGBI1pink", "purple" };
stringlist = stringlist.Select(x => x.Replace("RGBI1", "")).ToList();
stringlist.ForEach(x => Console.WriteLine(x));
-->
red
green
pink
purple
但问题是图像没有被裁剪,左右两侧22像素都没有被删除。
有没有办法做到这一点,首先从网址提高图像分辨率然后裁剪?
答案 0 :(得分:1)
Google搜索php image crop
显示the secret:
$rect = [22, 0, 800, 1500]
$thumb = imagecrop($thumb, $rect)
答案 1 :(得分:0)
在这一行:
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
您只需将原始图像缩放到新尺寸即可。 正如documentation所说:
如果源和目标坐标以及宽度和高度不同,将执行适当的图像片段拉伸或收缩。
您需要设置:
$shiftX = 22*(1280/1500); // consider passing variables rather than constant values
$scaledWidth = 720-$shiftX*2;
imagecopyresampled($thumb, $img, 0, 0, $shiftX, 0, $new_width, $new_height, $scaledWidth, $height);
,它会截取源图像所需的(比例)矩形,以将其粘贴到目标图片中。