私はこれとしばらくの間戦っており、結果を得ることはできません。 私はこのSO QAのメソッドを使用しています>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();
}
}
まあ、コード内に少なくとも1つのタイプミスがあります。作図が終わったら( 'using'を使って)' Graphics'オブジェクトを破棄しなければなりません。そして、 'fs'ストリームに直接保存するだけでは、' BinaryWriter'と 'MemoryStream'を使う点を理解していません。 –
新しいビットマップのサイズは? – kennyzx
@PeterDunihoこれはタイプミスですが、それはx2 - x1を意味します。私はテストから元のコードに戻しました。結果は同じですが、 – Orion