总结一下图片相关,常用的几个操作
 
一 创建Image对象

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#图片相关常用的方法及处理的更多相关文章

  1. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  2. (转)Android之常用功能方法大集合

    这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...

  3. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  4. 常用js方法

    function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...

  5. iOS常用公共方法

      iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...

  6. JS快速获取图片宽高的方法

    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...

  7. IOS中图片拉伸技巧与方法总结(转载)

    以下内容转载自:http://my.oschina.net/u/2340880/blog/403996 IOS中图片拉伸技巧与方法总结 一.了解几个图像拉伸的函数和方法 1.直接拉伸法 简单暴力,却是 ...

  8. php 获取图片主要颜色的方法

    本文章向码农们介绍php 获取图片主要颜色的方法,主要涉及php针对图片的相关操作技巧,需要的码农可以参考一下. $i = imagecreatefromjpeg("image.jpg&qu ...

  9. 转载:JS快速获取图片宽高的方法

    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...

随机推荐

  1. ubuntu下面安装nodejs

    对于刚接触ubuntu的同学来说,一切都是新的,一切都是那么熟悉而又不熟悉的.不管是作为一个前端工程师还是一个后端工程师,我相信大家知道nodejs,但是如果希望自己能够在ubuntu上面使用node ...

  2. Codeforces 1238 D. AB-string

    思维题 这次cf思维题好多啊 定义了good string 指一个串,其中每一个字符都属于一个长度>=2 的回文串的一部分.叫你求一个串中有几个good substring. 显然ab串 goo ...

  3. IT兄弟连 HTML5教程 CSS3揭秘 小结及习题

    小结 CSS3对于开发者来说,给web应用带来了更多的可能性,极大提高了开发效率.CSS3在选择器上的支持可谓是丰富多彩,使得我们能够灵活的控制样式,而不必为元素进行规范化的命名.CSS3支持的动画类 ...

  4. ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式

    为什么要使用泛型仓储?好处是? 前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD. 当我们再添加一个实体(比如Student)时,StudentRe ...

  5. C# calculate disk size

    static void Main(string[] args) { string dir = @"C:\"; string[] dirs=Directory.GetDirector ...

  6. CSS3动画的使用

    0921自我总结 CSS3动画的使用 一.动画的创建 @keyframes规则是创建动画 浏览器兼容 1.@keyframes myfirst 2.@-webkit-keyframes myfirst ...

  7. 为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的

     最近有一个疑惑:为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的         首先,我们看一个局部内部类的例子:             class OutClass {  ...

  8. Vue.js+vue-element搭建属于自己的后台管理模板:更深入了解Vue.js(三)

    前言 上一章我们介绍了关于Vue实例中一些基本用法,但是组件.自定义指令.Render函数这些放到了本章来介绍,原因是它们要比前面讲的要难一些,组件是Vue.js最核心的功能,学习使用组件也是必不可少 ...

  9. ref的使用

    参考地址https://www.cnblogs.com/goloving/p/9404099.html <img src="./01.jpg" ref="img&q ...

  10. Re-爬楼梯

    题目地址 https://dn.jarvisoj.com/challengefiles/CFF_100.rar.dbeee1536c0a5ef5844f42c93602aae5 看看功能,看样子要爬到 ...