我需要从背景图像,文本和保存为JPEG格式的图像生成容易学习和快速的方法。
你有什么建议吗?有没有关于这方面的库或教程?重要的标准是简单性。
发布于 2010-10-07 17:03:52
我通常使用GDI+来完成此操作。网上有很多关于这方面的教程,但基本上你需要做的是这样的:
using(Image image = new Bitmap(Width, Height))
using (Graphics g = Graphics.FromImage(image)) {
g.Draw....
g.Draw....
image.Save(filename, ImageFormat.Jpeg);
}对Draw....的调用可以绘制基元、图像、文本等。
还要记住,文本看起来是锯齿状的,您可以在Graphics对象上使用一些方法来平滑这一点。在本例中为g.TextRenderingHint = TextRenderingHint.AntiAlias;
如果你觉得它参差不齐,还有其他选择可以让它看起来更好。默认设置更倾向于性能而不是质量,所以如果你想要高质量,你需要自己设置。例如,将g.SmoothingMode设置为HighQuality会使圆形基元看起来比默认配置平滑得多。
它真的很容易使用,并且让最终的图像看起来像你想要的那样,所以试一试吧!
发布于 2010-10-07 17:19:19
在WPF 3.5/4中,您还可以使用.Net /Media.Imaging作为GDI+的替代方案
首先创建一个DrawingVisual和一个DrawingContext
DrawingVisual visual = new DrawingVisual();
DrawingContext dc = visual.RenderOpen();然后在上面画东西:
dc.DrawRectangle(...);
dc.DrawText(...);
etc...确保将其关闭:
dc.Close();WPF的伟大之处在于,图形用户界面中的所有东西实际上也都是可视化的,所以如果你愿意,你不必使用上面的代码来编程绘制,你可以在窗口上用xaml构建你的可视化,然后直接呈现到RenderTargetBitmap上。
一旦你构建了你的视觉效果,你就可以使用一个编码器(.Net有Jpeg,Png,Bmp,Gif,Tiff和Wmp的编码器)将它渲染到一个文件中。
// Create a render target to render your visual onto. The '96' values are the dpi's, you can set this as required.
RenderTargetBitmap frame = new RenderTargetBitmap((int)visual.ContentBounds.Width, (int)visual.ContentBounds.Height, 96, 96, PixelFormats.Pbgra32);
frame.Render(visual);
// Now encode the rendered target into Jpeg and output to a file.
JpegBitmapEncoder jpeg = new JpegBitmapEncoder();
jpeg.Frames.Add(BitmapFrame.Create(frame));
using (Stream fs = File.Create(@"c:\filename.jpg"))
{
jpeg.Save(fs);
}在Drawing Objects和WPF Graphics Rendering上有一些很好的MS教程。
发布于 2010-10-07 17:06:47
GDI+和System.Drawing名称空间是做您想要做的事情所必需的。下面是一个基本的例子,但网上有许多详细介绍更高级功能的资源:
using(Bitmap myBitmap = new Bitmap("C:\\backgroundImage.jpg"))
using(Graphics g = Graphics.FromImage(myBitmap))
{
g.DrawString("Text", new Font("Arial", 10), Brushes.White, new PointF(0, 0));
myBitmap.Save("C:\\newImage.jpg");
}https://stackoverflow.com/questions/3880105
复制相似问题