我正在使用 c# 在 asp.net 上工作。我必须通过拍摄该图像的一部分来调整图像。我想从中间裁剪一部分图像,如下图所示。
谁能帮帮我。
我通过 Jquery 获取图像部分的坐标来做到这一点。
jQuery(function($) {
$('#target').Jcrop({
onChange: showCoords,
onSelect: showCoords,
onRelease: clearCoords
});
});
function showCoords(c) {
$('#xaxis').val(c.x);
$('#yaxis').val(c.y);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#xwidth').val(c.w);
$('#div_width').val(c.w);
$('#yheight').val(c.h);
$('#div_height').val(c.h);
};
function clearCoords() {
$('#coords input').val('0');
$('#yheight').css({ color: 'red' });
window.setTimeout(function() {
$('#yheight').css({ color: 'inherit' });
}, 500);
};
然后我使用这些坐标在 C# 中裁剪图像,例如
String savedFileName = uploadProfileImage(profileImageName, new System.Drawing.Rectangle(Int32.Parse(xaxis), Int32.Parse(yaxis), Int32.Parse(xwidth), Int32.Parse(yheight)));
public String uploadProfileImage(string profileImageName, System.Drawing.Rectangle rectangle)
{
try
{
String retFileName = "";
if (profileImageName != null || profileImageName != "")
{
GenerateCroppedThumbNail(profileImageName, rectangle);
}
return retFileName;
}
catch (Exception)
{
return String.Empty;
}
}
这很好用
如果您在服务器上执行此操作,我建议使用服务器安全包装器而不是直接使用 System.Drawing,这样您就不必担心避免 29+ 陷阱和错误。
我的ImageResizing.Net 库提供自动和手动裁剪
自动的
new ImageJob(source,dest,new
ResizeSettings("width=200;height=200;mode=crop;anchor=middlecenter")).Build();
手动(按百分比)
new ImageJob(source,dest,new
ResizeSettings("crop=20,20,80,80;cropxunits=100;cropyunits=100")).Build();
手动(在源图像坐标中)
new ImageJob(source,dest,new
ResizeSettings("crop=200,200,1000,1000;")).Build()