c#图片相关常用的方法及处理
1. 手头上有一些图片文件,希望转换成 c# 中 Image对象,然后加以使用。
public static System.Drawing.Image FromFile (string filename);
举个例子,建立一个winform工程,设置一下窗体的背景图片。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); Image image = Image.FromFile("Image.png");
this.BackgroundImage = image;
}
}
运行效果:

二 图片存储与显示
1. Image ---> Byte数组
Image对象保存成byte数组,进而存储在文件或者数据库里。
using (var memoryStream = new MemoryStream())
{
var image = Image.FromFile("Image.png");
image.Save(memoryStream, ImageFormat.Png);
var byteArr = memoryStream.ToArray();
}
2. Byte数组 ---> Image
从文件或数据库里读出来的数据,也可以再转换成Image对象。
var image1 = new ImageConverter().ConvertFrom(byteArr);
this.BackgroundImage = (Image)image1;
直接读取图片文件存储的二进制数据也可以转换成Image对象。
var originByte = File.ReadAllBytes("Image.png");
var image1 = new ImageConverter().ConvertFrom(originByte);
this.BackgroundImage = (Image)image1;
比较一下两者的二进制数据,还是有差异的。Image对象的数据量更大一些。但是经过我的测试。
两种数据都能被ImageConverter正确解析。
private void button1_Click(object sender, EventArgs e)
{
using (var memoryStream = new MemoryStream())
{
var image = Image.FromFile("Image.png");
image.Save(memoryStream, ImageFormat.Png);
var byteArr = memoryStream.ToArray(); var originByte = File.ReadAllBytes("Image.png");
WriteData("imageObj.txt", byteArr);
WriteData("originFile.txt", originByte);
}
} private static void WriteData(string filename, byte[] target)
{
var list = new List<string>();
for (var i = ; i < target.Length; i++)
{
list.Add($"{i}-->{target[i]}");
}
File.AppendAllLines(filename, list);
}
我换了一张很小的图片做比较。可以参考一下比较的片段,从第36个字节后不相同。

c#图片相关常用的方法及处理的更多相关文章
- Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法
Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类 的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...
- (转)Android之常用功能方法大集合
这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...
- Android随笔之——Android时间、日期相关类和方法
今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...
- 常用js方法
function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- JS快速获取图片宽高的方法
快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...
- IOS中图片拉伸技巧与方法总结(转载)
以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...
- php 获取图片主要颜色的方法
本文章向码农们介绍php 获取图片主要颜色的方法,主要涉及php针对图片的相关操作技巧,需要的码农可以参考一下. $i = imagecreatefromjpeg("image.jpg&qu ...
- 转载:JS快速获取图片宽高的方法
快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...
随机推荐
- ubuntu下面安装nodejs
对于刚接触ubuntu的同学来说,一切都是新的,一切都是那么熟悉而又不熟悉的.不管是作为一个前端工程师还是一个后端工程师,我相信大家知道nodejs,但是如果希望自己能够在ubuntu上面使用node ...
- Codeforces 1238 D. AB-string
思维题 这次cf思维题好多啊 定义了good string 指一个串,其中每一个字符都属于一个长度>=2 的回文串的一部分.叫你求一个串中有几个good substring. 显然ab串 goo ...
- IT兄弟连 HTML5教程 CSS3揭秘 小结及习题
小结 CSS3对于开发者来说,给web应用带来了更多的可能性,极大提高了开发效率.CSS3在选择器上的支持可谓是丰富多彩,使得我们能够灵活的控制样式,而不必为元素进行规范化的命名.CSS3支持的动画类 ...
- ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式
为什么要使用泛型仓储?好处是? 前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD. 当我们再添加一个实体(比如Student)时,StudentRe ...
- C# calculate disk size
static void Main(string[] args) { string dir = @"C:\"; string[] dirs=Directory.GetDirector ...
- CSS3动画的使用
0921自我总结 CSS3动画的使用 一.动画的创建 @keyframes规则是创建动画 浏览器兼容 1.@keyframes myfirst 2.@-webkit-keyframes myfirst ...
- 为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的
最近有一个疑惑:为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的 首先,我们看一个局部内部类的例子: class OutClass { ...
- Vue.js+vue-element搭建属于自己的后台管理模板:更深入了解Vue.js(三)
前言 上一章我们介绍了关于Vue实例中一些基本用法,但是组件.自定义指令.Render函数这些放到了本章来介绍,原因是它们要比前面讲的要难一些,组件是Vue.js最核心的功能,学习使用组件也是必不可少 ...
- ref的使用
参考地址https://www.cnblogs.com/goloving/p/9404099.html <img src="./01.jpg" ref="img&q ...
- Re-爬楼梯
题目地址 https://dn.jarvisoj.com/challengefiles/CFF_100.rar.dbeee1536c0a5ef5844f42c93602aae5 看看功能,看样子要爬到 ...