网络视频直播系统 Java Out Of Memory USB串口通信 tsql permissions ant 安卓项目实战 matlab中不等于怎么表示 yml文件注释 linux重启mysql mysql 导入数据 mysql 选择数据库 python开发 python服务器开发 python用什么数据库 java入门教程 java中tostring java数组 java获取时间 java入门基础 java怎么获取当前时间 linuxtail命令 相关软件 python队列 渐变事件 max电池容量 mssql JScodeblocks汉化包 刷新页面 小票打印 proteus8 看图软件cad pr加速视频 万能低格工具还原u盘 设备管理器在哪 globalscape 1500左右性价比最高的手机 a1474 mysql数据库恢复 主播音效
当前位置: 首页 > 学习教程  > 编程语言

bmp转Hobject

2020/10/8 20:25:39 文章标签:

bmp转Hobject基本代码 public void Bitmap2HObjectBpp8(Bitmap SrcImage, out HObject image){try{Point po new Point(0, 0);Size so new Size(SrcImage.Width, SrcImage.Height);//template.Width, template.HeightRectangle ro new Rectangle(po, so);Bitmap DstImg ne…

bmp转Hobject基本代码

public void Bitmap2HObjectBpp8(Bitmap SrcImage, out HObject image)
        {
            try
            {
                Point po = new Point(0, 0);
                Size so = new Size(SrcImage.Width, SrcImage.Height);//template.Width, template.Height
                Rectangle ro = new Rectangle(po, so);
 
                Bitmap DstImg = new Bitmap(SrcImage.Width, SrcImage.Height, PixelFormat.Format8bppIndexed);
                DstImg = SrcImage.Clone(ro, PixelFormat.Format8bppIndexed);
 
                Rectangle rect = new Rectangle(0, 0, DstImg.Width, DstImg.Height);
                BitmapData srcBmpData = DstImg.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
                HOperatorSet.GenImage1(out image, "byte", DstImg.Width, DstImg.Height, srcBmpData.Scan0);
                DstImg.UnlockBits(srcBmpData);
                
            }
            catch (Exception ex)
            {
                image = null;
            }
        }

bmp转Hobject进阶代码

public static HObject BitmapToHImage(Bitmap SrcImage)
{
HObject Hobj;
HOperatorSet.GenEmptyObj(out Hobj);

        Point po = new Point(0, 0);
        Size so = new Size(SrcImage.Width, SrcImage.Height);//template.Width, template.Height
        Rectangle ro = new Rectangle(po, so);

        Bitmap DstImage = new Bitmap(SrcImage.Width, SrcImage.Height, PixelFormat.Format8bppIndexed);
        DstImage = SrcImage.Clone(ro, PixelFormat.Format8bppIndexed);

        int width = DstImage.Width;
        int height = DstImage.Height;
        
        Rectangle rect = new Rectangle(0, 0, width, height);
        System.Drawing.Imaging.BitmapData dstBmpData =
            DstImage.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);//pImage.PixelFormat
        int PixelSize = Bitmap.GetPixelFormatSize(dstBmpData.PixelFormat) / 8;
        int stride = dstBmpData.Stride;
        
        //重点在此
        unsafe
        {
            int count = height * width;
            byte[] data = new byte[count];
            byte* bptr = (byte*)dstBmpData.Scan0;
            fixed (byte* pData = data)
            {
                for (int i = 0; i < height; i++)
                    for (int j = 0; j < width; j++ )
                        {
                             data[i * width + j ] = bptr[i * stride + j];
                        }
                HOperatorSet.GenImage1(out Hobj, "byte", width, height, new IntPtr(pData));
            }
        }

        DstImage.UnlockBits(dstBmpData);

        return Hobj;
    }

本文链接: http://www.dtmao.cc/news_show_250291.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?