图像相关(二) - System.Drawing.Bitmap 的使用_清风ai明月的博客-CSDN博客_system.drawing.bitmap


本站和网页 https://blog.csdn.net/i1tws/article/details/77454110 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

图像相关(二) - System.Drawing.Bitmap 的使用_清风ai明月的博客-CSDN博客_system.drawing.bitmap
图像相关(二) - System.Drawing.Bitmap 的使用
清风ai明月
于 2017-08-21 18:46:47 发布
17812
收藏
分类专栏:
# c#基础语法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/i1tws/article/details/77454110
版权
c#基础语法
专栏收录该内容
49 篇文章
1 订阅
订阅专栏
//缩放图像
private void ScaleBitmap(string imgUrl)
//源图像
System.Drawing.Bitmap oldBmp = new System.Drawing.Bitmap(imgUrl);
//新图像,并设置新图像的宽高
System.Drawing.Bitmap newBmp = new System.Drawing.Bitmap(100, 100);
Graphics draw = Graphics.FromImage(newBmp);//从新图像获取对应的Graphics
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, 50, 50);//指定绘制新图像的位置和大小
draw.DrawImage(oldBmp, rect);//把源图像的全部完整的内容,绘制到新图像rect这个区域内,这不就实现缩放了么
draw.Dispose();
oldBmp.Dispose();//一定要把源图Dispose调,因为保存的是相同路径,需要把之前的图顶替调,如果不释放的话会报错:(GDI+ 中发生一般性错误。)
newBmp.Save(imgUrl);//保存替换到同一个路径
//裁剪图像
private void CutBitmap(string imgUrl)
System.Drawing.Bitmap oldBmp = new System.Drawing.Bitmap(imgUrl);
//新图像,并设置宽高
System.Drawing.Bitmap newBmp = new System.Drawing.Bitmap(100, 100);
Graphics draw = Graphics.FromImage(newBmp);
draw.DrawImage(oldBmp, 50, 50);//指定目标图像从(x,y)坐标开始绘制
draw.Dispose();
oldBmp.Dispose();//一定要把源图Dispose调,因为保存的是相同路径,需要把之前的图顶替调,如果不释放的话会报错:(GDI+ 中发生一般性错误。)
newBmp.Save(imgUrl);
Bitmap转换为byte[]
public static byte[] BitmapToBytes(Bitmap bitmap)
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buffer = ms.ToArray();
ms.Close();
ms.Dispose();
return buffer;
byte[]转换为Bitmap
public static Bitmap BytesToBitmap(byte[] buffer)
MemoryStream ms = new MemoryStream(buffer);
Bitmap bmp = new Bitmap(ms);
ms.Close();
return bmp;
Graphics.DrawImage 方法理解
private void btnTest_Click(object sender, RoutedEventArgs e)
string imgUrl = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "RemotePhoto");
//imgUrl += @"\IMG_0005.JPG";
imgUrl += @"\1.jpg";
System.Drawing.Image srcImg = System.Drawing.Image.FromFile(imgUrl);//源图像
Bitmap newBmp = new Bitmap(500,500);
Graphics draw = Graphics.FromImage(newBmp);
draw.FillRectangle(System.Drawing.Brushes.Black, 0, 0, newBmp.Width, newBmp.Height);//绘制一层黑底
//由坐标指定的位置,绘制图像的原始物理大小,如果新图的宽高小于原始图像,则仅显示新图这么大区域的图像,多余的区域不显示,相当于被裁剪掉了(裁剪)
//draw.DrawImage(srcImg, 0, 0);
//draw.DrawImage(srcImg,new System.Drawing.Point(0,0));
//draw.DrawImage(srcImg,new PointF(0.5f,0.5f));
//指定位置并且指定大小,源图像会缩放或者拉伸到指定大小(缩放)
//image 要绘制的图像
//x,y 所绘制图像的x,y
//width 所绘制图像的宽
//height 所绘制图像的高
//注意理解“要绘制”和“所绘制”的区别
//public void DrawImage(Image image,int x,int y,int width,int height)
//draw.DrawImage(srcImg, 0, 0, newBmp.Width, newBmp.Height);
//(缩放)
//image 要绘制的 Image。
//rect 指定所绘制图像的位置和大小。(就是destRect)
//public void DrawImage(Image image,Rectangle rect)
draw.DrawImage(srcImg, new Rectangle(0,0,newBmp.Width,newBmp.Height));
//指定想要绘制源图像的区域,则仅绘制这个区域,其他区域不绘制(裁剪)
//image 要绘制的 Image。
//x,y 所绘制图像的左上角的 x 坐标。所绘制图像的左上角的 y 坐标。
//srcRect 它指定 image 对象中要绘制的部分。
//srcUnit度量单位
//注意理解“要绘制”和“所绘制”的区别
//public void DrawImage(Image image,int x,int y,Rectangle srcRect,GraphicsUnit srcUnit)
//Rectangle srcRect = new Rectangle(10,10,100,100);
//draw.DrawImage(srcImg, 0, 0, srcRect, GraphicsUnit.Pixel);
//绘制平行四边形,指定绘制的三个点,第四个点会自动计算出来的(裁剪)
//System.Drawing.Point leftUpCorner = new System.Drawing.Point(10, 10);//左上角
//System.Drawing.Point rightUpCorner = new System.Drawing.Point(200, 10);//右上角
//System.Drawing.Point leftBottomCorner = new System.Drawing.Point(50, 100);//左下角
//System.Drawing.Point[] destPara = { leftUpCorner, rightUpCorner, leftBottomCorner };
//draw.DrawImage(srcImg, destPara);
//根据上面的例子,以下方法的使用就不一一举例了
//指定源图像的绘制区域,并指定一个四边形
//destPoints定义一个四变形
//srcRect定义绘制源图的区域
//srcUnit度量单位
//public void DrawImage(Image image,Point[] destPoints,Rectangle srcRect,GraphicsUnit srcUnit)
//(缩放)
//destRect目标区域
//srcX 指定源图坐标x
//srcY 指定源图u坐标y
//srcWidth 指定源图宽
//srcHeight 指定源图高
//srcUnit度量单位
//public void DrawImage(Image image,Rectangle destRect,int srcX,int srcY,int srcWidth,int srcHeight,GraphicsUnit srcUnit)
//Rectangle destRect = new Rectangle(0, 0, newBmp.Width, newBmp.Height);
//draw.DrawImage(srcImg, destRect, 0, 0, srcImg.Width, srcImg.Height, GraphicsUnit.Pixel);
//(缩放)
//destRect目标区域
//srcRect 源区域
//public void DrawImage(Image image,Rectangle destRect,Rectangle srcRect,GraphicsUnit srcUnit)
//Rectangle destRect = new Rectangle(0,0,newBmp.Width,newBmp.Height);
//Rectangle srcRect = new Rectangle(0,0,srcImg.Width,srcImg.Height);
//draw.DrawImage(srcImg, destRect, srcRect, GraphicsUnit.Pixel);
//总结
//理解“要绘制”和“所绘制”的区别
//理解"裁剪"和"缩放"的区别
BitmapImage bmpImg = BitmapToBitmapImage(newBmp);
imgPic.Source = bmpImg;
清风ai明月
关注
关注
点赞
收藏
打赏
评论
图像相关(二) - System.Drawing.Bitmap 的使用
//缩放图像 private void ScaleBitmap(string imgUrl) { //源图像 System.Drawing.Bitmap oldBmp = new System.Drawing.Bitmap(imgUrl); //新图像,并设置新图像的宽高
复制链接
扫一扫
专栏目录
c#图像处理入门(-bitmap类和图像像素值获取方法)
hududumo
07-07
1321
一.Bitmap类
Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:
1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色.
2. PixelFormat属性:返回图像的像素格式.
3. Palette属性:获取和设置图像所使用的颜色调色板....
c# image控件显示bitmap
qq_30206643的博客
09-25
194
//慢 1000ms
afterImg.Source = ToBitmapImage(bmp);
public BitmapImage ToBitmapImage(System.Drawing.Bitmap ImageOriginal)
BitmapImage bitmapImage = new BitmapImage();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
参与评论
您还未登录,请先
登录
后发表或查看评论
c# bitmap和new bitmap(bitmap)及在System.Drawing.Image.get_RawFormat()报错“参数无效”
weixin_34061482的博客
01-10
4585
问题情境:
  给picturebox赋image属性,我用一下代码,出错:
Bitmap theBitmap = convertCameraData.display(rawDataArray, height, width, rawImageArray, rgbPalette_256, backgroundTemperature);
if (theBitmap =...
使用 C# / Unity 进行图像处理
最新发布
Gipsyz的博客
10-18
1496
使用 C# / Unity 进行图像处理
NET报System.Drawing.Bitmap报Out of memory错误记录
cwr888的专栏
04-17
390
最近用NET写了个图片裁决方法,上线后偶尔报Out of memory(有时候频繁有时候很正常).
源码如下:
/// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png 新图1_new.png
/// </summary>
/// <param name="picPath">要修改图片完整路径<...
非托管内存转换为System.Drawing.Bitmap
Bdyjy的博客
09-26
157
底层相机采集模块使用C++编写,需要传递给上层UI(C#)显示,即将非托管内存转换为Bitmap:
C#与C++接口图像表示:
/// <summary>
/// 底层图像表示
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct ImageParam
public int Width; //图像宽
public int Height;
关于C#中DrawLines方法的PointF数组的长度限制问题
心之路
05-25
2825
在开发一个项目时,需要做一个打印数据曲线的功能,结果发现一下数据曲线打印不出来。此后,进行了测试,发现DrawLines方法中的PointF的数组长度不能超过8125个,否则就不画线,而在其它对象上则不存在这个问题。在网络上查询的解释也不是很详细。不同的打印机该限制的值也可能不同。没有办法,目前只能自定义一个画线方法,来回避这个限制了。 public static void DrawL...
C#遇到System.Drawing.Bitmap有问题
hjxu2016的博客
07-17
3361
C#处理bitmap数据时,遇到
error CS0246: 未能找到类型或命名空间名“Bitmap”(是否缺少 using 指令或程序集引用?)
貌似是因为缺少 System.Drawing.Common 库
解决方案:
安装这个库
打开visual studio
依次
工具->NuGet 包管理->程序包管理控制台
输入
Install-Package System.Drawing.Common -Version 5.0.2
参考:
官网
https://www.nuget.org/pac
c#做图像处理的时候需要用到System.Drawing.Bitmap
热门推荐
08-12
1万+
用c#做图形图像处理的时候需要用到System.Drawing.Bitmap。在WPF中显示图像的Image控件接受的数据源是ImageSource,因此使用System.Drawing.Bitmap进行图像处理之后要把System.Drawing.Bitmap转换成ImageSource,转换方法如下:
System.Drawing.Bitmap m_Bitmap = new System.D
C# 使用System.Drawing.Bitmap报错
lzz555517的博客
05-10
2334
C#使用System.Drawing.Bitmap时报错
最近创建c#项目,使用System.Drawing.Bitmap时报错如下:
CS1069未能在命名空间“System.Drawing”中找到类型名“Bitmap”。此类型已转发到程序集“System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”。请考虑添加对该程序集的引用。
经查主要因为在创建项目时,使用的是.NET Cor
关于C# winform开发时datagridview图片显示异常的处理
永远是少年
11-21
1246
关于C# winform开发时datagridview图片显示异常的处理
(本文章纯属原创,希望能够对遇到和我类似问题的人启发思路)
在用C# 开发winfor窗体时,我需要在datagridview里面插入一个图片,查询了大部分网上的思路,基本上每个都尝试做了一下,结果是这样的。
可以看到,在显示中出现了两种错误,一种是显示文字“system.drawing.bitmap”,另外一种是出现一张错误的图片。
后来在逐渐的摸索中,发现了C# winform开发datagridview窗体插入图片的一些问题
将System.Drawing.Bitmap转换成System.Drawing.Imaging.BitmapSource
技术分享,共同进步
02-29
2692
public static BitmapSource ToBitmapSource(Bitmap bitmap)
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Png);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
让System.Drawing.Bitmap可以在linux运行
weixin_30471065的博客
08-07
618
.net core的bitmap使用的是以下类库,但无法在linux运行
https://github.com/CoreCompat/CoreCompat
在linux运行需要安装runtime.linux-x64.CoreCompat.System.Drawing
https://www.nuget.org/packages/runtime.linux-x64.CoreCompat.Sy...
System.Drawing.Bitmap要如何轉換成WPF中可用的ImageSource
liuruxin的专栏
06-14
2462
在一般情況下,如果我們有一些圖片需要顯示在WPF的應用程式中,通常我們會使用Image,以及指定Image.Source屬性,例如說下面這樣
img1.Source =
new BitmapImage(new Uri(@"image file path", UriKind.RelativeOrAbsolute));
利用這樣的方式,將圖片檔案顯示在Imagez上面;如果來源是byte
vb.net Bitmap Drawing
weixin_34419326的博客
01-08
476
Public Class Form1
Dim BMP As New Drawing.Bitmap(640, 480)
Dim GFX As Graphics = Graphics.FromImage(BMP)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArg...
10、wpf显示图片方式一: Image控件
roujian0985的博客
04-08
6543
整理下wpf image控件显示图片的方式,分为本地图片和内存图片(来自于网络交互中的图片)
Byte[]、Image、Bitmap 之间的相互转换
weixin_30411819的博客
02-13
971
/// <summary>/// 将图片Image转换成Byte[]/// </summary>/// <param name="Image">image对象</param>/// <param name="imageFormat">后缀名</param...
WPF 中使用System.Drawing.Bitmap
weixin_30687587的博客
05-07
347
用c#做图像处理的时候需要用到System.Drawing.Bitmap。在WPF中显示图像的Image控件接受的数据源是ImageSource,因此使用System.Drawing.Bitmap进行图像处理之后要把System.Drawing.Bitmap转换成ImageSource,转换方法如下:
System.Drawing.Bitmap m_Bitmap = new System.D...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
清风ai明月
CSDN认证博客专家
CSDN认证企业博客
码龄13年
暂无认证
114
原创
5万+
周排名
1万+
总排名
36万+
访问
等级
4426
积分
67
粉丝
97
获赞
18
评论
317
收藏
私信
关注
热门文章
vs2013 格式化代码 快捷键
24507
WPF数据绑定-简单对象的绑定
18346
图像相关(二) - System.Drawing.Bitmap 的使用
17808
“光猫”调制解调器 和 路由器的区别 傻傻分不清
15804
数组和类声明的几种方式
12423
分类专栏
java相关
JDK
1篇
java基础语法
IDEA
1篇
SpringBoot
3篇
c#相关
c#基础语法
49篇
Unity3d
22篇
WPF
32篇
WPF控件
4篇
Windows 窗体
3篇
ASP.NET
1篇
Microsoft Visual Studio
2篇
AForge
2篇
TFS
2篇
EmguCV
1篇
AS3.0相关
AS3.0基础语法
4篇
Flash/Flash Builder
1篇
数据库相关
SQL Server
10篇
Linux相关
其他
nodejs
1篇
html
1篇
Android
2篇
数学
1篇
DOS
2篇
UML
1篇
硬件知识
4篇
最新评论
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
空格:
那电器类和洗衣机类是什么关系呀?为啥呀?
查看java jdk 是否安装
m0_61656064:
请问输入java -version不是内部文件。。。但是我想下载后安装,电脑又提示我您的计算机已经安装了此软件。是否要重新安装?
这样该怎么办啊
Transform.TransformDirection 变换方向
happyCodingRun:
解释的不错的
数据库连接字符串写法
牛牛的哥:
叙述清晰明了,言简意赅
Transform.TransformDirection 变换方向
「已注销」:
就是,把这个脚本所挂载的物体,的方向向量,可以通过TransformDirection这个函数,转换到世界坐标系下。
就是,换个坐标系,表示同一个向量。
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
SpringBoot集成ActiveMQ
SpringBoot项目初始化配置(Spring Initializr)
Profile配置
2022年3篇
2021年2篇
2020年7篇
2019年22篇
2018年38篇
2017年40篇
2016年26篇
2015年2篇
目录
目录
分类专栏
java相关
JDK
1篇
java基础语法
IDEA
1篇
SpringBoot
3篇
c#相关
c#基础语法
49篇
Unity3d
22篇
WPF
32篇
WPF控件
4篇
Windows 窗体
3篇
ASP.NET
1篇
Microsoft Visual Studio
2篇
AForge
2篇
TFS
2篇
EmguCV
1篇
AS3.0相关
AS3.0基础语法
4篇
Flash/Flash Builder
1篇
数据库相关
SQL Server
10篇
Linux相关
其他
nodejs
1篇
html
1篇
Android
2篇
数学
1篇
DOS
2篇
UML
1篇
硬件知识
4篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
清风ai明月
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值