我试图重新调整上传JPEG在asp.net.NET Drawing.Graphics.FromImage()返回空白黑色图像
所以我去:
Image original = Image.FromStream(myPostedFile.InputStream);
int w=original.Width, h=original.Height;
using(Graphics g = Graphics.FromImage(original))
{
g.ScaleTransform(0.5f, 0.5f); ... // e.g.
using (Bitmap done = new Bitmap(w, h, g))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
//saves blank black, though with correct width and height
}
}
这样可以节省处女黑JPEG什么我给它的文件。 但如果我立即采取输入图像流为done
位图,它重新压缩并保存精美,如:
Image original = Image.FromStream(myPostedFile.InputStream);
using (Bitmap done = new Bitmap(original))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
}
做我必须做一些魔术相克?
UPD: 我想:
Image original = Image.FromStream(fstream);
int w=original.Width, h=original.Height;
using(Bitmap b = new Bitmap(original)) //also tried new Bitmap(w,h)
using (Graphics g = Graphics.FromImage(b))
{
g.DrawImage(original, 0, 0, w, h); //also tried g.DrawImage(b, 0, 0, w, h)
using (Bitmap done = new Bitmap(w, h, g))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
}
}
相同的故事 - 正确尺寸的纯黑色
谢谢,这是有道理的。我做了一点不同,但你的代码是很好的例证 – joox 2010-06-02 18:49:26
你在哪里**完全用图像**背景填充区域? – 2012-04-17 10:39:58
在g.DrawImage(img,drect)行中; ,这段代码确实填充了背景! – Myra 2012-04-17 13:08:22