如何在 C# 中创建/编辑 PNG 文件?

Posted

技术标签:

【中文标题】如何在 C# 中创建/编辑 PNG 文件?【英文标题】:How do I create/edit a PNG file in C#? 【发布时间】:2022-01-07 16:05:40 【问题描述】:

我编写了一个可以创建数字艺术的程序。像 Mandelbrot 集和 Julia 集这样的图像。但我希望将这些图像保存为 PNG。目前,在 Java 中,我在应用程序窗口中生成图像,然后对显示进行屏幕截图。但是,我失去了这些图像的更精细的细节。此外,这种方法还可以减小图像的物理尺寸。我希望能够用这些图片制作一张大海报。

在 C# 中,我使用以下内容: Bitmap myimage = new Bitmap("image.png"); 和:myimage.SetPixel(x,y, Color.FromArgb(255*colors[x,y], 255*colors[x,y], 255*colors[x,y]); 其中colors[,] 是介于 0 和 1 之间的某个值。

代码运行良好,减去 Bitmap 声明。我的理解是new Bitmap(filepath); 允许您编辑和操作PNG 图像。我这样想是对的吗?

(编辑)PS:PNG 文件“image.png”确实存在于解决方案文件夹中。

【问题讨论】:

“我这样想是对的吗?” - 试试看它是否有效。 【参考方案1】:

首先你必须知道创建PNG文件的分步过程。

为 Nuget.org 的 .NET 包设置 Aspose.Imaging。 包括对以下两个命名空间的引用:Aspose.Imaging, Aspose.Imaging.ImageOptions。 在转换前使用 SetLicense 方法指定许可证。 将 BMP 文件读入 Image 对象。 使用 PngOptions 类设置输出 PNG 图像的属性。 使用指定的 PNG 选项保存输出的 PNG 图像。

从 BMP 创建 PNG 图像的代码

using System;
//Use following namespaces to create PNG image
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;

namespace CreatePNGImage

    class Program
    
        static void Main(string[] args)
        
            //Set license before creating PNG image from BMP
            Aspose.Imaging.License AsposeImagingLicense = new Aspose.Imaging.License();
            AsposeImagingLicense.SetLicense(@"c:\asposelicense\license.lic");

            //load input BMP image 
            Image BmpToPngImage = Image.Load("InputBMPImage.bmp");
            
            //set attributes of the output PNG file
            PngOptions PNGImageOptions = new PngOptions();
            PNGImageOptions.ResolutionSettings = new ResolutionSetting(300, 300);
            PNGImageOptions.CompressionLevel = 6;

            //save converted output PNG image
            BmpToPngImage.Save("OutputPNGImage.png", PNGImageOptions);

        
    

尝试使用 c# 创建 PNG 文件。

【讨论】:

以上是关于如何在 C# 中创建/编辑 PNG 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中创建相对于用户文档的文件目录?

如何在 C# 中创建一个临时文件(用于写入)? [复制]

如何在 C# 中创建基本的 IFC 文件

在 C# (WP7) 中创建音频文件

如何从导入到数组的 png 中创建影片剪辑?

如何在 C# 中创建 Microsoft Access 数据库? [复制]