- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用以下方法将 BitmapSource
转换为 Bitmap
:
internal static Bitmap ConvertBitmapSourceToBitmap(BitmapSource bitmapSrc)
{
int width = bitmapSrc.PixelWidth;
int height = bitmapSrc.PixelHeight;
int stride = width * ((bitmapSrc.Format.BitsPerPixel + 7) / 8);
byte[] bits = new byte[height * stride];
bitmapSrc.CopyPixels(bits, stride, 0);
unsafe
{
fixed (byte* pBits = bits)
{
IntPtr ptr = new IntPtr(pBits);
return new System.Drawing.Bitmap(
width,
height,
stride,
System.Drawing.Imaging.PixelFormat.Format32bppPArgb, //The problem
ptr);
}
}
}
但我不知道如何获取 BitmapSource
的 PixelFormat
,所以我的图像被破坏了。
对于上下文,我使用此技术是因为我想加载一个 tiff,它可能是 8 位或 16 位灰色或 24 位或 32 位颜色,并且我需要保留 PixelFormat
。我更愿意修复我的 ConvertBitmapSourceToBitmap
,因为它相当方便,但也很乐意用更好的技术替换以下代码,以便从 BitmapSource 创建位图:
Byte[] buffer = File.ReadAllBytes(filename.FullName);
using (MemoryStream stream = new MemoryStream(buffer))
{
TiffBitmapDecoder tbd = new TiffBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
return BitmapBitmapSourceInterop.ConvertBitmapSourceToBitmap(tbd.Frames[0]);
}
最佳答案
使用 BitmapSource.Format 有什么问题吗? ?这是 PixelFormat,您已经在使用它来确定步幅。
关于c# - 如何获得 BitmapSource 的 PixelFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373762/
如何从 PixelFormat 获取像素长度(以字节为单位)枚举?我想使用 native 方法处理图像像素,但如果我不知道像素的偏移量,我该如何遍历图像。 代码: let formRgbCube (i
正如标题所说,有人知道什么是RGBX_8888像素格式吗?和 RGBA_8888 有什么区别? RGBA_8888 是否提供 alpha channel 但 RGBX_8888 不提供? 不幸的是,A
我对 PixelFormat 感到困惑在安卓系统上。 我的设备是摩托罗拉 Defy。 我有两个问题: 在 Android 2.3 上 getWindowManager().getDefaultDisp
我尝试从位图 (System.Drawing.Bitmap) 中获取所有字节值。因此我锁定字节并复制它们: public static byte[] GetPixels(Bitmap bitmap){
我知道这听起来微不足道,但我目前陷入困境。 我有各种格式的图像作为输入。 Gray16、Gray8、Indexed8 等。我需要的是将它们转换为 RGB24 格式,到目前为止我已经做到了 public
Accord.NET PointsMarker.cs似乎支持 PixelFormat Format32bppArgb。为什么这会捕获 UnsupportedImageFormatException?
我正在尝试使用 pictureBox->Image (Windows Forms) 来显示 cv::Mat 图像 (openCV)。我想这样做而不将图像保存为文件(因为我想每 100 毫秒重置一次图像
我正在使用以下方法将 BitmapSource 转换为 Bitmap: internal static Bitmap ConvertBitmapSourceToBitmap(BitmapSource
我们的目标是用来自 Kinect 的红外图像制作一部电影。我们正在使用 AForge videowriter,我们已经有了处理普通 RGB 流的工作代码。 (RgbResolution640x480F
我正在尝试使用该函数设置渲染格式 CCTexture2D.setDefaultAlphaPixelFormat(Bitmap.Config.ARGB_8888); 但它给我一个错误 找不到符号方法 s
有没有办法从 PixelFormat 类型的 codecContext.pix_fmt 中获取像素的位数?我使用开关手动完成: switch (OUT_IMAGE_FORMAT) { case
考虑以下设置:我在磁盘上有一些图像。我无法修改这些图像,因为它们属于另一个项目。我刚读完。 我需要对它们进行处理以使其在我的应用中看起来最佳。我的意思是像素着色器已处理。当我完成处理后,输出图像将用作
我发现更改 SurfaceView 中的像素格式对帧速率有很大影响。但是,我似乎无法找到一种方法来根据每个设备选择最佳格式。 例子: @Override public void surfaceCrea
我需要以原始 bpp 格式处理和保存图像(1 - BnW,8 - 灰色,24 - 彩色)。处理后我总是有 24bpp(由于使用 Aforge.Net 处理)。我将原始 bpp 传递给保存函数,我正在使
我目前正在使用 C# 进行一些图像处理,我对 Bgr32 像素格式感到困惑。以下说明来自microsoft msdn:http://msdn.microsoft.com/en-us/library/s
我正在寻找渲染 DrawingVisual (示例中的可视化)使用 RenderTargetBitmap 到位图使用 View 将此位图设置为 Canvas 的背景如下: var bmp = new
在System.Drawing中,我们从Image对象中检索PixelFormat,但SkiaSharp.SkImage不提供API来查找解码图像的PixelFormat。是否有任何其他解决方法来查找
我正在尝试在 AVCaptureConnection 上设置像素格式类型,但它会终止所有 RGB 设置,但适用于 kCVPixelFormatType_32BGRA。 Terminating app
我有一个具有以下 View 结构的游戏应用程序。首先,我有一个空的 FrameLayout,如下所示: FrameLayout game_frame_layout = new FrameLayout(
我想使用函数 CGDisplayStreamCreateWithDispatchQueue。 文档告诉我为“pixelFormat”使用以下可能的值:(参数需要是一个Int32) The desire
我是一名优秀的程序员,十分优秀!