我有一个位图,我正在进行着色转换。我有新的像素数组,但我不知道如何将它们作为图像保存回磁盘
public static void TestProcessBitmap(string inputFile, string outputFile)
{
Bitmap bitmap = new Bitmap(inputFile);
Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
byte[] pixels = BitmapToPixelArray(formatted);
pixels = Process8Bits(pixels, System.Windows.Media.Colors.Red);
Bitmap output = new Bitmap(pixels); //something like this
}
如何将新像素保存为磁盘上的位图?
答案 0 :(得分:2)
我相信您可以在将字节加载回Bitmap对象后使用Bitmap.Save()
方法。 This post 可以为您提供有关如何操作的一些见解。
According to this MSDN document,如果您只在使用Bitmap.Save()
时指定路径,
如果图像的文件格式不存在编码器,则为Portable 使用网络图形(PNG)编码器。
答案 1 :(得分:1)
您可以使用MemoryStream将字节数组转换为位图,然后将其提供给Image.FromStream方法。你的例子就是......
public static void TestProcessBitmap(string inputFile, string outputFile)
{
Bitmap bitmap = new Bitmap(inputFile);
Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
byte[] pixels = BitmapToPixelArray(formatted);
pixels = Process8Bits(pixels, System.Windows.Media.Colors.Red);
using (MemoryStream ms = new MemoryStream(pixels))
{
Bitmap output = (Bitmap)Image.FromStream(ms);
}
}