如何用C#打开bmp, jpg图片文件并进行图像处理? 比如进行高斯滤波高斯滤波我懂,我想知道的是,如何用C#操作bmp图片,jpg图片比如用个什么函数把图片里的数据都读到一个矩阵里然后我就可以进行操作了然后再从这个矩阵写回去生成一个新的图片文件多谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Bitmap _Bitmap = (Bitmap)Image.FromFile(@"c:\1.BMP"); BitmapData _BitmapData = _Bitmap.LockBits(new Rectangle(0, 0, _Bitmap.Width, _Bitmap.Height), ImageLockMode.ReadWrite, _Bitmap.PixelFormat); byte[] _Value = new byte[_BitmapData.Stride * _BitmapData.Height]; Marshal.Copy(_BitmapData.Scan0, _Value, 0, _Value.Length);写回去还是用 Marshal.Copy 你好, Bitmap类是在哪里定义的? 嗯~ 谢谢~ 我也找到了不过, 刚才我在一个console程序里试了一下, 好像console程序里不能够使用System.Drawing这个名字空间 我直接写的全名: System.Drawing.Bitmap 不是在代码中using的问题,而是在项目中添加引用。 如果是在命令行用csc直接编译的话,加上/r:System.Drawing.dll。在VS中就在右边的解决方案资源管理器中的“引用”上点右键,添加引用。 哦, 多谢!我按照1楼说的方法对放置图片数据的byte数组 _Value[]进行了操作之后, 如何将改变后的_Value写回图片?我当前要处理的文件首先在一个PictureBox中显示了出来, 如何动态的更新该PictureBox显示的图片(也就是说, 我每一步进行的图形处理的结果都会实时的显示出来)? 我目前的按一个按钮, 进行图像处理, 并更新PictureBox控件的代码如下, 当然, 现在这段代码无法实现我说的上面我想要的效果:private void btnProcess_Click(object sender, EventArgs e) { _Bitmap = new Bitmap(pbx1.Image); _BitmapData = _Bitmap.LockBits(new Rectangle(0, 0, _Bitmap.Width, _Bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, _Bitmap.PixelFormat); byte[] _Value = new byte[_BitmapData.Stride * _BitmapData.Height]; System.Runtime.InteropServices.Marshal.Copy(_BitmapData.Scan0, _Value, 0, _Value.Length); for (int i = 0; i < _BitmapData.Height; i++) { for (int j = 0; j < _BitmapData.Stride; j++) { _Value[i * _BitmapData.Stride + j] /= 2; } } System.Runtime.InteropServices.Marshal.Copy(_Value, 0, _BitmapData.Scan0, _Value.Length); pbx1.Refresh(); } 上面代码中这句_Value[i * _BitmapData.Stride + j] /= 2; 可以换成任何对像素进行的操作... 关于强类型DataSet c# 删除 节点里面的类容 最近公司安排一个web管理系统小项目让我做,可是我不知道如何下手,需求已经有文档了!请各位大哥赐教 求一正则表达式 如何实现TreeView节点的拖拽,急!!! 关于WinForm下信息提示的实现问题,请高手指点!!! net中怎么把栏目封装成标签呢 类似#YX_AY_HEAD# 如何从一个aspx网站中post数据 高分求教三个简单问题!!!!! 哪位朋友提供几个下载C#方面电子书的网站,谢谢!! 向串口发送十六进制数据???在线等 C#入门经典里面的源代码有问题啊
byte[] _Value = new byte[_BitmapData.Stride * _BitmapData.Height]; Marshal.Copy(_BitmapData.Scan0, _Value, 0, _Value.Length);写回去还是用 Marshal.Copy
我也找到了
不过, 刚才我在一个console程序里试了一下,
好像console程序里不能够使用System.Drawing这个名字空间
我直接写的全名: System.Drawing.Bitmap
在VS中就在右边的解决方案资源管理器中的“引用”上点右键,添加引用。
我当前要处理的文件首先在一个PictureBox中显示了出来, 如何动态的更新该PictureBox显示的图片(也就是说, 我每一步进行的图形处理的结果都会实时的显示出来)?
{
_Bitmap = new Bitmap(pbx1.Image); _BitmapData = _Bitmap.LockBits(new Rectangle(0, 0, _Bitmap.Width, _Bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, _Bitmap.PixelFormat);
byte[] _Value = new byte[_BitmapData.Stride * _BitmapData.Height]; System.Runtime.InteropServices.Marshal.Copy(_BitmapData.Scan0, _Value, 0, _Value.Length); for (int i = 0; i < _BitmapData.Height; i++)
{
for (int j = 0; j < _BitmapData.Stride; j++)
{
_Value[i * _BitmapData.Stride + j] /= 2;
}
} System.Runtime.InteropServices.Marshal.Copy(_Value, 0, _BitmapData.Scan0, _Value.Length);
pbx1.Refresh(); }
_Value[i * _BitmapData.Stride + j] /= 2;
可以换成任何对像素进行的操作...