首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像处理

图像处理
EN

Stack Overflow用户
提问于 2010-10-07 16:57:07
回答 4查看 1.3K关注 0票数 1

我需要从背景图像,文本和保存为JPEG格式的图像生成容易学习和快速的方法。

你有什么建议吗?有没有关于这方面的库或教程?重要的标准是简单性。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-07 17:03:52

我通常使用GDI+来完成此操作。网上有很多关于这方面的教程,但基本上你需要做的是这样的:

代码语言:javascript
复制
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会使圆形基元看起来比默认配置平滑得多。

它真的很容易使用,并且让最终的图像看起来像你想要的那样,所以试一试吧!

票数 4
EN

Stack Overflow用户

发布于 2010-10-07 17:19:19

在WPF 3.5/4中,您还可以使用.Net /Media.Imaging作为GDI+的替代方案

首先创建一个DrawingVisual和一个DrawingContext

代码语言:javascript
复制
DrawingVisual visual = new DrawingVisual();
DrawingContext dc = visual.RenderOpen();

然后在上面画东西:

代码语言:javascript
复制
dc.DrawRectangle(...);
dc.DrawText(...);
etc...

确保将其关闭:

代码语言:javascript
复制
 dc.Close();

WPF的伟大之处在于,图形用户界面中的所有东西实际上也都是可视化的,所以如果你愿意,你不必使用上面的代码来编程绘制,你可以在窗口上用xaml构建你的可视化,然后直接呈现到RenderTargetBitmap上。

一旦你构建了你的视觉效果,你就可以使用一个编码器(.Net有JpegPngBmpGifTiffWmp的编码器)将它渲染到一个文件中。

代码语言:javascript
复制
// 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 ObjectsWPF Graphics Rendering上有一些很好的MS教程。

票数 6
EN

Stack Overflow用户

发布于 2010-10-07 17:06:47

GDI+和System.Drawing名称空间是做您想要做的事情所必需的。下面是一个基本的例子,但网上有许多详细介绍更高级功能的资源:

代码语言:javascript
复制
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");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3880105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档