以下是我试图开展工作的示例代码,但到目前为止还没有运气。
Bitmap bitmap = new Bitmap((Stream)Cache["images"]);
Graphics g = Graphics.FromImage(bitmap);
StringFormat strFrmt = new StringFormat();
strFrmt.Alignment = StringAlignment.Center;
SolidBrush btmForeColor = new SolidBrush(Color.Green);
SolidBrush btmBackColor = new SolidBrush(Color.Black);
Font btmFont = new Font("Verdana",7);
SizeF textSize = new SizeF();
textSize = g.MeasureString("Copyright", btmFont);
float x = ((float) bitmap.Width - textSize.Width - 3);
float y = ((float) bitmap.Height - textSize.Height - 3);
float w = ((float) x + textSize.Width);
float h = ((float) y + textSize.Height);
RectangleF textArea = new RectangleF(x,y,w,h);
g.FillRectangle(btmBackColor,textArea);
g.DrawString("Copyright",btmFont,btmForeColor,textArea);
btmForeColor.Dispose();
btmBackColor.Dispose();
btmFont.Dispose();
g.Dispose();
从代码中可以看出,我是在获取Stream和creatin位图,然后对位图进行一些更改,现在我想保存我的位图对象,但是无法弄清楚如何,我做了一些研究在互联网上,但所有的例子/文章/论坛帖子都是针对服务器上有一些图像文件的情况,并且想要进行更改,在我的情况下,我只是有一些流,并希望在特定路径中保存位图对象。我怎样才能做到这一点 ?任何形式的帮助将不胜感激。
答案 0 :(得分:2)
当然它只是bitmap.save?或其重载之一? g实际上是在绘制位图。
**更新
Bitmap bitmap = new Bitmap(@"C:\Users\mike\Pictures\Panasonic\P1000016.jpg");
Graphics g = Graphics.FromImage(bitmap);
StringFormat strFrmt = new StringFormat();
strFrmt.Alignment = StringAlignment.Center;
SolidBrush btmForeColor = new SolidBrush(Color.Green);
SolidBrush btmBackColor = new SolidBrush(Color.Black);
Font btmFont = new Font("Verdana", 90);
SizeF textSize = new SizeF();
textSize = g.MeasureString("Copyright", btmFont);
float x = ((float)bitmap.Width - textSize.Width - 3);
float y = ((float)bitmap.Height - textSize.Height - 3);
float w = ((float)x + textSize.Width);
float h = ((float)y + textSize.Height);
RectangleF textArea = new RectangleF(x, y, w, h);
g.FillRectangle(btmBackColor, textArea);
g.DrawString("Copyright", btmFont, btmForeColor, textArea);
btmForeColor.Dispose();
btmBackColor.Dispose();
btmFont.Dispose();
g.Dispose();
bitmap.Save(@"C:\Users\mike\Pictures\Panasonic\P1000016_0.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
这对我有用,但不得不增加字体大小。
答案 1 :(得分:0)
我似乎找到了解决方案
var photoPath = Server.MapPath("~/" + AsyncFileUpload1.FileName);
if (File.Exists(photoPath))
{
File.Delete(photoPath);
}
using (var mainFile = File.Create(photoPath))
{
// dostuff()
bitmap.Save(mainFile, image.RawFormat);
}
我必须在保存之前创建文件。谢谢你迈克和我在一起,我真的很感激!!!