在图片框中查看保存为字符串的图像

Posted

技术标签:

【中文标题】在图片框中查看保存为字符串的图像【英文标题】:View an image saved as a string in a picture box 【发布时间】:2021-12-22 13:29:35 【问题描述】:

我将图像转换为字符串(base 64),并且我希望该字符串在 Windows 窗体项目的图片框中显示为图像。我该怎么做?

【问题讨论】:

就像你读过的每一本好的汽车维修手册一样。改装是拆卸的逆转 【参考方案1】:

我想你想知道如何以人类可以阅读的形式在位图中显示文本。

为了能够在现有位图中绘制,您需要一个Graphics 对象。可以使用静态方法Graphics.FromImage(Image)获取。

一旦你有了一个 Graphics 对象,你就可以用它来绘制图像。在这种情况下,您将使用Graphics.DrawString 的重载之一

你的需求中有很多项目没有提到。

您的图片框是否已显示图像并且您希望此文本出现在此图像中吗?如果文本必须在现有图像上,您想要它的副本,还是文本必须在原始图像上?还是您想要只显示文字的新图片? 图像中的文本具有文本、字体(Arial 或 Times new Roman 等、大小、粗体、斜体等)、画笔(文本的颜色)和图像中的位置。您从哪里获得这些值?

假设您知道从哪里获取文本、字体等,并且您有属性

class TextToImageWriter    // todo invent proper name

    public Font Font get; set;
    public Brush Brush get; set;

    public void AddTextToImage(Image image, string text, PointF textLocation)
    
        using (Graphics graphics = Graphics.FromImage(image))
        
            graphics.DrawString(text, this.Font, this.Brush, textLocation);
        
    

    public Image CreateNewImageWithText(Image image, string text,
        PointF textLocation)
    
        Image clone = (Image)image.Clone();
        this.AddTextToImage(clone, text, textLocation);
        return clone;
    

    public Image CreateEmptyImageWithText(string text, int width, int height,
        Color backgroundColor, PointF textLocation)
    
        Image image = new Bitmap(width, height)
        using (Graphics graphics = Graphics.FromImage(Bmp))
        
             using (SolidBrush brush = new SolidBrush(backgroundColor))
             
                 // fill the background
                 graphics.FillRectangle(brush, 0, 0, width, height);
                 // fill the text
                 graphics.DrawString(text, this.Font, this.Brush, textLocation);
             
         
     

当然,如果您不想创建类,可以将属性作为参数添加到函数中。

为简单起见,我省略了参数验证(图像不为空等)

用法:

TextToImageWriter imageWriter = new TextToImageWriter

    Brush = ...
    Font = ...
;

Image imageToPutTheTextOn = this.PictureBox1.Image;
string text = this.GetImageText();              // maybe from a text box?
PointF textLocation = this.GetTextLocation();   // maybe from some mumeric boxes?

Image imageWithText = imageWriter.AddTextToImage(imageToPutTextOn, text, textLocation);
this.PictureBox2.Image = imageWithText;

【讨论】:

哇非常感谢!!你解释的真清楚!!你帮了我很多!谢谢....

以上是关于在图片框中查看保存为字符串的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获图片框中的图像并使其可以在c#应用程序中下载?

如何在winforms c#中从图片框中裁剪和保存非矩形但多边形区域[重复]

将base 64编码字符串转换为图像

matlab如何保存图片到我上一步通过字符串创建的文件夹里?

如何在文本框中输入值后单击输入更改图像?

寻找访问字符串的猫鼬数组