设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

C# Hobject转bitmap出现图片扭曲

[复制链接]
造弹超人 发表于 2022-9-24 23:53:54 | 显示全部楼层 |阅读模式
Hobject转bitmap,高分辨率图像正常,小分辨率图片扭曲。这是怎么回事呢??求大神指导。。。
  1. /// <summary>
  2.         /// 将Hobject转Bitmap
  3.         /// </summary>
  4.         /// <param name="image"></param>
  5.         /// <returns></returns>
  6.         public Bitmap HObject2Bpp8(HObject image)
  7.         {
  8.             HTuple hpoint, type, width, height;
  9.             const int Alpha = 255;
  10.             HOperatorSet.GetImagePointer1(image, out hpoint, out type, out width, out height);

  11.             Bitmap res = new Bitmap(width, height, PixelFormat.Format8bppIndexed);
  12.             ColorPalette pal = res.Palette;
  13.             for (int i = 0; i <= 255; i++)
  14.             {
  15.                 pal.Entries = Color.FromArgb(Alpha, i, i, i);
  16.             }
  17.             res.Palette = pal;
  18.             Rectangle rect = new Rectangle(0, 0, width, height);
  19.             BitmapData bitmapData = res.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
  20.             int PixelSize = Bitmap.GetPixelFormatSize(bitmapData.PixelFormat) / 8;

  21.             IntPtr ptr1 = bitmapData.Scan0;
  22.             IntPtr ptr2 = hpoint;
  23.             int bytes = width * height;
  24.             byte[] rgbvalues = new byte[bytes];
  25.             System.Runtime.InteropServices.Marshal.Copy(ptr2, rgbvalues, 0, bytes);
  26.             System.Runtime.InteropServices.Marshal.Copy(rgbvalues, 0, ptr1, bytes);

  27.             res.UnlockBits(bitmapData);
  28.             return res;
  29.         }
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
安静的晖 发表于 2022-10-13 11:31:51 | 显示全部楼层
没对齐吧,不能直接把数据复制到bitmap里面去
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
xzzz 发表于 2023-3-31 09:29:25 | 显示全部楼层
我试了一下也是这样,2048x2448的图转换出来正常,我截取的500x400像素的转换后就扭曲了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表