SharpDx将位图保存到文件



我从渲染目标中具有SharpDx Direct2D1位图。我想将其保存到文件作为图像。这是出于测试目的。我不确定是否需要WIC位图或如何转换这些位图。或如何首先接收WIC位图。

也找不到简单的解释如何将此位图保存到一般的文件中。

任何帮助。

编辑:

我现在正在使用这种方法:http://www.rolandk.de/wp/2013/06/inhalt-der-der-rendertarget-rendertarget-textur-textur-in-ein-in-bitmap-kopieren/

是德语,但他说的是,您必须复制将目标渲染到分期资源,以通过CPU访问。然后将内容复制到位图。

我正在尝试这种方法,然后最终使用bitmap.save(文件名)。但是,以某种方式的位图停留为空。也许我想念正确编码文件。但似乎我完全没有从后缓冲区目标获得数据。

如果您在wicbitmap中有图像,则将其移至gdi 位图并从那里保存非常容易:

    var pixelData = new byte[width*height*4];
    wicBitmap.CopyPixels(pixelData, width*4);
    var bmp = new System.Drawing.Bitmap(width, height);
    var bd = bmp.LockBits(new System.Drawing.Rectangle(0, 0, width, height), ImageLockMode.WriteOnly,
        System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
    Marshal.Copy(pixelData, 0, bd.Scan0, pixelData.Length);
    bmp.UnlockBits(bd);

可能有更好的方法来解决这个问题。但这是我成功使用的。

如果您有wicbitmap,则该问题由DanBysröm回答,然后简单地将数据复制到GDI位图。

我在编辑部分中发布的链接解决了我的特殊问题。我没有使用WIC或其他任何东西,因为这可能首先是我问题的完全错误的方法。

编辑部分中出现的问题是通过不使用copyresource(...)而不是copysubresource(...)而不是默认参数来复制全部来解决的。我不确定为什么CopyResource(...)不起作用。

最新更新