栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从像素数据的字节数组创建位图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从像素数据的字节数组创建位图

  1. 如果封送处理数据而不是设置scan0(直接或通过BitMap()的重载)进行设置,这是安全的。您不想让托管对象固定,这将限制垃圾收集器。
  2. 如果您进行复制,绝对安全。
  3. 输入数组是托管的,可以由GC进行移动,scan0是非托管指针,如果移动数组,该指针将过期。Bitmap对象本身是受管理的,但通过句柄在Windows中设置scan0指针。
  4. ImageLockMode.UserInputBuffer是吗?显然,它可以传递给LockBits,也许它告诉Bitmap()复制输入数组数据。

从数组创建灰度位图的示例代码:

    var b = new Bitmap(Width, Height, PixelFormat.Format8bppIndexed);    ColorPalette ncp = b.Palette;    for (int i = 0; i < 256; i++)        ncp.Entries[i] = Color.FromArgb(255, i, i, i);    b.Palette = ncp;    var BoundsRect = new Rectangle(0, 0, Width, Height);    BitmapData bmpData = b.LockBits(BoundsRect,   ImageLockMode.WriteOnly,   b.PixelFormat);    IntPtr ptr = bmpData.Scan0;    int bytes = bmpData.Stride*b.Height;    var rgbValues = new byte[bytes];    // fill in rgbValues, e.g. with a for loop over an input array    Marshal.Copy(rgbValues, 0, ptr, bytes);    b.UnlockBits(bmpData);    return b;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576046.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号