我想在.NET 4.0中编写一个小程序,它将打开一个.jpg(或.jpeg)文件,向图像添加一行文本,然后将图像重新保存为.jpg。有谁知道最简单的方法来做到这一点?你可以在.NET中打开JPEG,添加文本并将其重新保存为JPEG格式吗?
感谢您的任何帮助。
我想在.NET 4.0中编写一个小程序,它将打开一个.jpg(或.jpeg)文件,向图像添加一行文本,然后将图像重新保存为.jpg。有谁知道最简单的方法来做到这一点?你可以在.NET中打开JPEG,添加文本并将其重新保存为JPEG格式吗?
感谢您的任何帮助。
事情是这样的:
var filePath = @"D:\Pictures\Backgrounds\abc.jpg";
Bitmap bitmap = null;
// Create from a stream so we don't keep a lock on the file.
using (var stream = File.OpenRead(filePath))
{
bitmap = (Bitmap)Bitmap.FromStream(stream);
}
using (bitmap)
using (var graphics = Graphics.FromImage(bitmap))
using (var font = new Font("Arial", 20, FontStyle.Regular))
{
// Do what you want using the Graphics object here.
graphics.DrawString("Hello World!", font, Brushes.Red, 0, 0);
// Important part!
bitmap.Save(filePath);
}
你能不能保存吗? – 2016-10-14 11:07:56
@DB Yup,你可以使用['Bitmap.Save(Stream,ImageFormat)'](https://msdn.microsoft.com/en-us/library/ms142147(v = vs.110).aspx)overload写入流(例如'MemoryStream')。 – TheCloudlessSky 2016-10-14 14:22:10
var myBitmap = new Bitmap("C:\\myImage.jpg");
var g = Graphics.FromImage(myBitmap);
g.DrawString("My\nText", new Font("Tahoma", 40), Brushes.White, new PointF(0, 0));
请记住,重新保存为JPEG(尤其是你修改)再次对其进行压缩,并且每个压缩扔了一些细节。当你这样做的时候,如果你必须的话,尽可能少地做。 – cHao 2010-08-27 01:20:06
@cHao - 另一种选择是在没有水印的情况下保持原始图像的同时生成/输出图像。 – 2010-08-27 01:21:03