Image控件中如何获取所打开图像的像素

NUmen123 2009-05-11 04:04:07
RT~~~本人初学C#~~~现在用Image打开了一副PNG图怎样才能重Image中读取出图像个像素的RBGA信息呢?
...全文
499 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
善良的奶爸 2010-11-22
  • 打赏
  • 举报
回复
关注一下这个话题.
光宇广贞 2009-05-11
  • 打赏
  • 举报
回复
等结贴啦……嘿嘿……
NUmen123 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hikaliv 的回复:]
而这个Bitmap有一个GetPixel方法,用于取得指定坐标的像素点,返回是一个Color对像,用这个Color对像,你想要什么RGBA啦,什么RGB32啦什么的……就随你了。
[/Quote]

-0-~~~~3Q~~~~~
光宇广贞 2009-05-11
  • 打赏
  • 举报
回复
而这个Bitmap有一个GetPixel方法,用于取得指定坐标的像素点,返回是一个Color对像,用这个Color对像,你想要什么RGBA啦,什么RGB32啦什么的……就随你了。
光宇广贞 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 NUmen123 的回复:]
System.Drawing.Image 这个Image
[/Quote]

这个System.Drawing下的Bitmap类有一个构造函数的重载:

public Bitmap(
Image original
)

用这个来得到你想要的Bitmap
NUmen123 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jingshuaizh 的回复:]
如何获取图像象素属性(不用生成图像对象)


目前获取图像象素方法如下:

Image img = new Bitmap(FFullName);
FPixelW = img.Width;
FPixelH = img.Height;

获取图像文件其他属性方法如下:

FileInfo fi = new FileInfo(FFullName);
FSize = fi.Length/1024;
FDate = fi.LastWriteTime.ToString();
FName = fi.Name;




[/Quote]

…………我不是要这个文件的文件信息 - =
NUmen123 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hikaliv 的回复:]
引用 4 楼 NUmen123 的回复:
引用 3 楼 hikaliv 的回复:

用 image 的 ToBitmap() 方法得到Bitmap,然后用两个for 嵌套循环读取里面的pixels,里面还有一个方法叫做 ToRBGA 方法,或者类似的名字,你用CTRL+J去看。

别忘了最后要对Bitmap进行Dispose


…………找不到这个函数~~~Icon里面才有 - =


你的是WPF下的IMAGE还是WINFORM下的IMAGE?

或者说,请把IMAGE的命名空间说出来,IMAGE在C#里有两个。
[/Quote]

System.Drawing.Image 这个Image
cpio 2009-05-11
  • 打赏
  • 举报
回复
Bitmap.GetPixel 方法

returnValue = instance.GetPixel(x, y)

public Color GetPixel (
int x,
int y
)

可以获取指定坐标的颜色值
光宇广贞 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 NUmen123 的回复:]
引用 3 楼 hikaliv 的回复:

用 image 的 ToBitmap() 方法得到Bitmap,然后用两个for 嵌套循环读取里面的pixels,里面还有一个方法叫做 ToRBGA 方法,或者类似的名字,你用CTRL+J去看。

别忘了最后要对Bitmap进行Dispose


…………找不到这个函数~~~Icon里面才有 - =
[/Quote]

你的是WPF下的IMAGE还是WINFORM下的IMAGE?

或者说,请把IMAGE的命名空间说出来,IMAGE在C#里有两个。
蓝海D鱼 2009-05-11
  • 打赏
  • 举报
回复
如何获取图像象素属性(不用生成图像对象)



目前获取图像象素方法如下:

Image img = new Bitmap(FFullName);
FPixelW = img.Width;
FPixelH = img.Height;

获取图像文件其他属性方法如下:

FileInfo fi = new FileInfo(FFullName);
FSize = fi.Length/1024;
FDate = fi.LastWriteTime.ToString();
FName = fi.Name;





引用Microsoft Shell Controls and Automation(在com里)
//
using Shell32;
//
string sFile=@"c:\\test1.bmp";
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace( Path.GetDirectoryName(sFile) );
FolderItem item = dir.ParseName( Path.GetFileName( sFile ) );
string det = dir.GetDetailsOf( item, i );
//i 说明
0 :文件名 text1.bmp
1 : 大小 141KB
2 :类型 bmp文件
3 :修改时间
4 :创建时间
5 :访问时间
26:分辨率 1461x855
27:水平像素 1461像素
27:垂直像素 855像素
//要取哪个自己写吧

我获取的 26、27、28是空的
你在哪里看的,我在
http://www.codeproject.com/cs/files/detailedfileinfo.asp
看到的
NUmen123 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hikaliv 的回复:]
用 image 的 ToBitmap() 方法得到Bitmap,然后用两个for 嵌套循环读取里面的pixels,里面还有一个方法叫做 ToRBGA 方法,或者类似的名字,你用CTRL+J去看。

别忘了最后要对Bitmap进行Dispose
[/Quote]

…………找不到这个函数~~~Icon里面才有 - =
光宇广贞 2009-05-11
  • 打赏
  • 举报
回复
用 image 的 ToBitmap() 方法得到Bitmap,然后用两个for 嵌套循环读取里面的pixels,里面还有一个方法叫做 ToRBGA 方法,或者类似的名字,你用CTRL+J去看。

别忘了最后要对Bitmap进行Dispose
NUmen123 2009-05-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yuwenge 的回复:]
Bitmap对象中有相应的方法,不过速度很慢,BitmapData对象可以在unsafe模式下获取,比较快,不过需要指针。
[/Quote]

使用Bitmap对象能读取PNG图吗?
卧_槽 2009-05-11
  • 打赏
  • 举报
回复
Bitmap对象中有相应的方法,不过速度很慢,BitmapData对象可以在unsafe模式下获取,比较快,不过需要指针。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧