0
我正在與此爭鬥一段時間,似乎無法得到任何結果。 我使用的方法從此質量保證>How to crop an image using C#?C#裁剪圖片使用座標
我沒有得到任何錯誤:/代碼只是運行,但圖像不會被裁剪。
代碼:
string fileNameWitPath = "finename.png";
fileNameWitPath = context.Server.MapPath("~/content/branding/" + context.Request.QueryString["userId"] + "/logo" + "/" + fileNameWitPath)
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Open))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
//get co-ords
int x1 = Convert.ToInt32(context.Request.QueryString["x1"].Trim());
int y1 = Convert.ToInt32(context.Request.QueryString["y1"].Trim());
int x2 = Convert.ToInt32(context.Request.QueryString["x2"].Trim());
int y2 = Convert.ToInt32(context.Request.QueryString["y2"].Trim());
Bitmap b = new Bitmap(fs);
Bitmap nb = new Bitmap((x2 - x1), (y2 - y1));
Graphics g = Graphics.FromImage(nb);
//g.DrawImage(b, x2, y2);
Rectangle cropRect = new Rectangle(x1, y1, nb.Width, nb.Height);
g.DrawImage(b, new Rectangle(x1, y1, nb.Width, nb.Height), cropRect, GraphicsUnit.Pixel);
Byte[] data;
using (var memoryStream = new MemoryStream())
{
nb.Save(memoryStream, ImageFormat.Png);
data = memoryStream.ToArray();
}
bw.Write(data);
bw.Close();
}
}
嗯,有在代碼中的至少一個錯字:'X2 = x1'。繪製完成後(使用''''),你也應該放置你的'Graphics'對象。我不明白使用'BinaryWriter'和'MemoryStream'的意義,因爲你可以直接保存到'fs'流中。 –
新位圖的大小是多少? – kennyzx
@PeterDuniho這是一個錯字,它的意思是x2 - x1。我只是從我的測試中恢復了原來的代碼。結果是一樣的,儘管 – Orion