步骤如下:
(1)在NET中创建一个窗体,加入pictureBox控件。设置其Image为空,SizeMode属性设为AutoSize;
(2)加入一个OpenFileDialog控件,一个button控件,用于打开文件;
(3)加入三个textBox控件,用于表示RGB三个颜色的值。
(4)定义一个私有变量pick为布尔值,来表示是否拾取上的颜色。并在Form1_Load中将其设置为false;再加入一个public Bitmap myBitmap用来进行函间的访问。
(5)为button控件增加click事件,该事件主要是完成读入文件和对pictureBox控件的初始化:
(6)为pictureBox控件增加mousemove事件:
代码如下:
Step1:设置bool值pick并初始化几个变量
public bool pick;
public Bitmap myBitmap;
private void Form1_Load(object sender, EventArgs e)
{
pick = false;
}
谷歌翻译:返回值是COLORREF值,它指定像素的RGB。 如果像素位于当前剪切区域之外,则返回值为CLR_INVALID(Wingdih中定义的0xFFFFFFFF)。
文档:
网页链接
以acd看图为例:
在默认状态下,选中后,在状态栏会显示图像的信息,有图像KB大小也有长宽尺寸,
不过这样一个一个查看太慢了,按Alt + O快捷键或者选择工具菜单>选项,打开选项设置窗口,
选择左侧文件列表>缩略图显示,再点击右侧的缩略图信息
在d出的选取缩略图显示信息中展开图像属性:勾图像大小,展开文件属性:勾选大小(KB)
点击添加按钮,添加到当前显示明细中,点击确定,返回选项窗口,点击确定。
看缩略图下面很清楚的显示出了图像大小,也就是长宽像素值,还有KB大小。
try{
File _file = new File("C:/Documents and Settings/mayuanfei/My Documents/女友照片jpg"); //读入文件
Image src = javaximageioImageIOread(_file); //构造Image对象
int wideth=srcgetWidth(null); //得到源图宽
int height=srcgetHeight(null); //得到源图长
Systemoutprintln(wideth+","+height);
}catch(Exception e){
eprintStackTrace();
}
CvScalar s;
s=cvGet2D( image, idx0, idx1 );
image为图像,idx0和idx1为像素坐标
再用sval[i]可以取出不同通道i=0,1,2,3的像素值
jonnysuen 的思路貌似不对
多线程用于处理不确定时间的情况
而像楼主的问题总的时间复杂度的一定的,所以不管你用不用多线程最后还是要读取每个像素,也就是是说,根本没有起到较少时间复杂度的目的
楼主的问题只能从算法上解决,简单的for循环是不行的
可能需要用到矩阵算法等多媒体方面的知识,我不是很了解,期待高手~~~
以上就是关于C#中如何得到图片所有像素全部的内容,包括:C#中如何得到图片所有像素、请教下关于获取屏幕像素值的问题,这段代码这句话是什么意思、如何获得图片的宽高像素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)