尝试调整裁剪坐标以适应新的宽高比

时间:2011-12-20 06:07:27

标签: .net asp.net-mvc-3 crop image-resizing imageresizer

我正在使用.NET的www.imageresizing.net工具动态创建图库和缩略图。这个组件真正的优点是你可以通过改变URL来重新裁剪和调整图像大小。

现在,我所拥有的是我所需纵横比(9:5)的图库图像,正确呈现以下内容:

upload/289.jpg?crop=22,30,562,330&width=540&height=300

你会注意到定义的裁剪坐标高于22,30,562,330 (X1,Y1,X2,Y2)这会选择一个22像素,30像素,562像素,底部330像素的区域。所以基本上是一个540x300px的粗糙裁剪区域,位于较大图像的中心(640x427,但这与问题无关)。

现在如上所述,这显示良好且正确的宽高比。然后,我可以使用以下命令将URL更改为缩略图版本

upload/289.jpg?crop=22,30,562,330&width=120&height=67

我之前已经知道120x67 (确切地说是120.6x67像素)是正确的宽度和高度来保持我的宽高比,而我的裁剪显然可以保持与我只是缩放相同图片。现在,当我看到这一点时,事情看起来很棒。

test1

(我已将其放置在灰色背景上,以便您可以看到图像边界)

然而我的问题是什么时候我想要从任意一侧敲掉10个像素并设置宽度为100的东西变成梨形。我想这样做是因为在我使用的图像库中我需要能够适应四个图像。

现在,如果我指定这个,我的图像会显示,但是在一个白色的信箱中有两个小条顶部和底部,我很欣赏,因为我没有在我的裁剪中添加10个像素在左边或者减去10个像素我的作物在右边:

upload/289.jpg?crop=22,30,562,330&width=100&height=67

test2

所以显然我需要调整裁剪X1 (22)并稍微裁剪X2 (562)。然而,它似乎并不那么容易,因为如果我分别设置为32552,我仍然保留信箱,我认为我需要补偿宽度从120减去到100。

我认为需要在缩放之前应用双方所需的10个像素或某些东西(?),但我不知道如何处理这个算法,我真的迷失在这里!!

有意义吗?任何图像处理/数学向导都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

只需添加&mode=crop让模块为您做数学运算(并确保您使用的是V3.1 +)。

我相信您的困惑源于裁剪坐标(默认情况下)相对于原始图像的事实,宽度/高度值是图像的缩放尺寸。即,宽度设置的10个像素相当于具有该特定图像的裁剪矩形的50个像素左右。使用cropxscalecropyscale,您可以更改这些裁剪值的解释方式。 &cropxscale=100&cropyscale=100使它们成为百分比,而&cropxscale=120&cropyscale=67则允许您指定相对于缩放图像大小的裁剪坐标。

此外,V3.1及更高版本还允许您手动裁剪和自动裁剪:

实施例。 ?crop=22,30,562,330&width=100&height=67&mode=crop

模块将首先应用您的裁剪设置,然后再次裁剪以确保您的佩戴和高度规格完全匹配。如果您不需要精确的宽度和高度,则可以使用& mode = max。

此外,您可以使用anchor setting调整自动裁剪的应用方式。

我不完全确定您的裁剪坐标来自哪里或其他情况如何,但一如既往,我可以通过support@imageresizing.net与我联系。

您也可以check out the command reference at imageresizing.net/docs/reference

我想我可以在一起使用裁剪命令添加一页示例,因为理论可能是数学密集型的。很抱歉花了这么长时间才找到这篇文章;我希望你能通过电子邮件发送support@imageresizing.net,我本可以立即回复你的问题。

与往常一样,如果有任何我可以提供的帮助,请给我发电子邮件,或发布在SO上,并通过电子邮件给我发送链接:)我更新http://imageresizing.net文档5-20次平均每周使事情变得更清晰或更详细,所以每当有人感到困惑时我总是感兴趣,因为这通常意味着文档需要工作,或者需要从更多地方链接。