gpt4 book ai didi

c# - 图像裁剪无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:09 25 4
gpt4 key购买 nike

这段代码应该裁剪图像,但是裁剪的大小是正确的,但是裁剪是从左上角开始的。这些图像更清楚地说明了问题 herehere .

坐标大约是:x=68,y=28,width=176,height=174。下面是裁剪代码。

/// <summary>
/// Handles the Click event of the UploadButton control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
/// <remarks></remarks>
protected void UploadButton_Click(object sender, EventArgs e)
{

String path = HttpContext.Current.Request.PhysicalApplicationPath + "images\\";


Boolean FileOK = false;
Boolean FileSaved = false;

if (Upload.HasFile)
{
Session["WorkingImage"] = Upload.FileName;

String FileExtension = Path.GetExtension(Session["WorkingImage"].ToString()).ToLower();

String[] allowedExtensions = { ".png", ".jpeg", ".jpg", ".gif" };

for (int i = 0; i < allowedExtensions.Length; i++)
{
if (FileExtension == allowedExtensions[i])
{
FileOK = true;
}
}
}


if (FileOK)
{
try
{
Upload.PostedFile.SaveAs(path + Session["WorkingImage"]);
FileSaved = true;
}

catch (Exception ex)
{
ErrorLabel.Text = "File could not be uploaded." + ex.Message;
ErrorLabel.Visible = true;
FileSaved = false;
}
}

else
{
ErrorLabel.Text = "Cannot accept files of this type.";
ErrorLabel.Visible = true;
}


if (FileSaved)
{
UploadPanel.Visible = false;
CropPanel.Visible = true;
CropImage.ImageUrl = "~/Images/" + Session["WorkingImage"];
}
}

/// <summary>
/// Handles the Click event of the CropButton control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
/// <remarks></remarks>
protected void CropButton_Click(object sender, EventArgs e)
{
String path = HttpContext.Current.Request.PhysicalApplicationPath + "Images\\";

string ImageName = Session["WorkingImage"].ToString();
int w = Convert.ToInt32(Convert.ToDouble(W.Value));
int h = Convert.ToInt32(Convert.ToDouble(H.Value));
int x = Convert.ToInt32(Convert.ToDouble(X.Value));
int y = Convert.ToInt32(Convert.ToDouble(Y.Value));


byte[] CropImage = Crop(path + ImageName, w, h, x, y);

using (MemoryStream ms = new MemoryStream(CropImage, 0, CropImage.Length))
{
ms.Write(CropImage, 0, CropImage.Length);

using (Image CroppedImage = Image.FromStream(ms, true))
{
string SaveTo = path + "crop" + ImageName;
CroppedImage.Save(SaveTo, CroppedImage.RawFormat);
CropPanel.Visible = false;
CroppedPanel.Visible = true;
this.CroppedImage.ImageUrl = "~/Images/crop" + ImageName;
}
}
}

#endregion

#region Methods

/// <summary>
/// Crops the specified image.
/// </summary>
/// <param name="image">The image.</param>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
/// <param name="x">The x value.</param>
/// <param name="y">The y value.</param>
/// <returns></returns>
/// <remarks></remarks>
private static byte[] Crop(string image, int width, int height, int x, int y)
{
try
{
using (Image OriginalImage = Image.FromFile(image))
{
using (Bitmap bmp = new Bitmap(width, height))
{
//bmp.SetResolution(OriginalImage.HorizontalResolution, OriginalImage.VerticalResolution);

using (Graphics Graphic = Graphics.FromImage(bmp))
{
Graphic.SmoothingMode = SmoothingMode.AntiAlias;
Graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
Graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
//Graphic.DrawImage(OriginalImage, new Rectangle(0, 0, width, height), x, -y, width, height,GraphicsUnit.Pixel);
Graphic.DrawImage(OriginalImage, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, OriginalImage.RawFormat);

return ms.GetBuffer();
}
}
}
}
catch (Exception e)
{
throw e;
}
}

最佳答案

裁剪看起来不像是从左上角开始,而是在左上角附近。在我看来,xy 坐标是错误的。我建议手动插入你自己的 xy 值,直到你得到你想要的图像,然后找出为什么 x >y 值与您的预期不同。

我将它与我拥有的一些裁剪代码(我知道这些代码有效)进行了比较,但我没有发现您的实际 Crop 方法有任何问题。

关于c# - 图像裁剪无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com