找回密码
 立即注册

QQ登录

只需一步,快速开始

superhackerzhan

主题

帖子

积分

积分
  • 金币

  • 主题

  • 帖子

最新发帖
superhackerzhan
  /  发表于:2010-4-13 10:22  /   查看:15716  /  回复:10
提示: 作者被禁止或删除 内容自动屏蔽

10 个回复

倒序浏览
Carl
版主   /  发表于:2010-4-13 11:10:00
沙发
使用System.Drawing.Bitmap类型,在构造函数中传入JPEG的文件名或者二进制流,然后使用GetPixel
方法循环查询每个点的颜色。Bitmap类型会自动使用JPEG解码器对图片解码。

这个方法性能一般,如果没有特殊的需求,应该够用了。
愿 Engine 归于沉寂,Timer 停止运动,Message Queue 不再流淌,Data Source 为我掌握
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-13 11:13:00
板凳
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
winking
葡萄城公司职员   /  发表于:2010-4-13 20:54:00
地板
原帖由 Carl 于 2010-4-13 11:10:00 发表
使用System.Drawing.Bitmap类型,在构造函数中传入JPEG的文件名或者二进制流,然后使用GetPixel
方法循环查询每个点的颜色。Bitmap类型会自动使用JPEG解码器对图片解码。

这个方法性能一般,如果没有特殊的需求,应该够用了。


要求比较高的时候可以通过LockBits来获得Bitmap在内存中的数据,然后可以通过unsafe代码或者Marshal来直接操作内存数据以高效修改图像。
MSDN示例:http://msdn.microsoft.com/zh-cn/library/5ey6h79d%28v=VS.80%29.aspx
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-17 16:08:00
5#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-23 21:51:00
6#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-23 21:54:00
7#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-24 11:10:00
8#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
winking
葡萄城公司职员   /  发表于:2010-4-24 22:45:00
9#
  1. BitmapData bmpData2 = bitmap2.LockBits(rect2, ImageLockMode.ReadOnly,bitmap2.PixelFormat);
  2. IntPtr ptr2 = bmpData2.Scan0;
  3. int size2 = bitmap2.Width * bitmap2.Height * 3;
  4. byte[] rgbvalue2 = new byte[size2];
  5.          
  6. System.Runtime.InteropServices.Marshal.Copy(ptr2, rgbvalue2, 0, size2);
复制代码

你这里做的假设有问题,并不是所有图片的存储都是RGB的,你需要根据PixelFormat来判断。
比较常用的是这两个:
PixelFormat24bppRGB
Specifies that the format is 24 bits per pixel; 8 bits each are used for the red, green, and blue components.

PixelFormat32bppARGB
Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components.

按照你的实现,如果图片不是24bits的,那么肯定无法通过Memory Copy的。

你可以试试监视当时的PixelFormat,甚至直接通过内存窗口查看当时的内存情况。
回复 使用道具 举报
superhackerzhan
  /  发表于:2010-4-26 10:10:00
10#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部