图片和Base64字符串互转
图片URL转成Base64字符串
/// <summary>
/// 通过Url获取到Image格式的文件
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static Image UrlToImage(string url)
{
WebClient mywebclient = new WebClient();
byte[] Bytes = mywebclient.DownloadData(url);
using (MemoryStream ms = new MemoryStream(Bytes))
{
Image outputImg = Image.FromStream(ms);
return outputImg;
}
}
/// <summary>
/// 再将Iamge文件转为Base64字符串
/// </summary>
/// <param name="img"></param>
/// <returns></returns>
public static string BitmapToBase64(Image img)
{
System.Drawing.Bitmap bitMap = new System.Drawing.Bitmap(img);
string imgBase64 = string.Empty;
using (MemoryStream memoryStream = new MemoryStream())
{
bitMap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buffer = new byte[memoryStream.Length];
memoryStream.Position = 0;
memoryStream.Read(buffer, 0, (int)memoryStream.Length);
memoryStream.Close();
imgBase64 = Convert.ToBase64String(buffer);
}
return imgBase64;
}
Base64字符串转成图片并保存
/// <summary>
/// 将Base64String转为图片并保存
/// </summary>
/// <param name="imgBase64"></param>
public static void Base64ToImage(string imgBase64)
{
string format;
string imgPath = Directory.GetCurrentDirectory() + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss");
byte[] buffer = Convert.FromBase64String(imgBase64);
using (MemoryStream memoryStream = new MemoryStream(buffer))
{
System.Drawing.Bitmap bitMap = new System.Drawing.Bitmap(memoryStream);
System.Drawing.Imaging.ImageFormat imgFormat = GetImageFormat(memoryStream, out format);
imgPath = imgPath + format;
bitMap.Save(imgPath, imgFormat);
bitMap.Dispose();
}
}
/// <summary>
/// 获取Image图片格式
/// </summary>
/// <param name="file"></param>
/// <param name="format"></param>
/// <returns></returns>
private static System.Drawing.Imaging.ImageFormat GetImageFormat(MemoryStream file, out string format)
{
byte[] sb = new byte[2]; //这次读取的就是直接0-1的位置长度了.
file.Read(sb, 0, sb.Length);
//根据文件头判断
string strFlag = sb[0].ToString() + sb[1].ToString();
//察看格式类型
switch (strFlag)
{
//JPG格式
case "255216":
format = ".jpg";
return System.Drawing.Imaging.ImageFormat.Jpeg;
//GIF格式
case "7173":
format = ".gif";
return System.Drawing.Imaging.ImageFormat.Gif;
//BMP格式
case "6677":
format = ".bmp";
return System.Drawing.Imaging.ImageFormat.Bmp;
//PNG格式
case "13780":
format = ".png";
return System.Drawing.Imaging.ImageFormat.Png;
//其他格式
default:
format = ".jpg";
return System.Drawing.Imaging.ImageFormat.Jpeg;
}
}
调用
static void Main(string[] args)
{
//string imgUrl = "D:\\c29e09b0-e5f4-43fa-9ded-8f9865a2e8d4.jpg";
//string imgUrl = "https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png";
string imgUrl = "http://file02.16sucai.com/d/file/2015/0408/779334da99e40adb587d0ba715eca102.jpg";//图片可以是本地磁盘地址、可以是http和https地址
Image img = UrlToImage(imgUrl);//转成Image格式
string imgBase64 = BitmapToBase64(img); //注意:生成的Base64字符串加上 data:image/jpeg;base64, 可以在前端识别
Base64ToImage( imgBase64);//生成图片并保存 Console.ReadKey();
}
图片和Base64字符串互转的更多相关文章
- java 图片转base64字符串、base64字符串转图片
java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...
- java实现图片与base64字符串之间的转换
package cn.com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...
- Base64编码 图片与base64编码互转
package com.education.util; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import jav ...
- 将图片转换为Base64字符串公共类抽取
public class ImageToBase64 { //图片转化成base64字符串 public static String GetImageStr(String path,int width ...
- 字符串编码、Base64字符串 互转
/// <summary> /// 将字符串编码为Base64字符串 /// </summary> /// <param name="str"& ...
- c# 图片 与 BASE64 字符串 互相转换。
using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...
- C#和Python 图片和base64的互转
C#实例代码: /// <summary> /// 图片转base64 /// </summary> /// <param name="bmp"> ...
- 图片与base64的互转
/// <summary> /// 把图片转换到文本信息 /// </summary> /// <param name=&quo ...
- C# 常用方法——图片转base64字符串
其他扩展方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// Image 转成 base64 / ...
随机推荐
- (六) Java数据库
一.概述 程序开发没有数据库的参与,可以说几乎是不可能的.数据库和Java都已经有了简单的了解,现在的关键是对两者进行连接,起到这一作用的正是JDBC——Java Database Connectiv ...
- 制作自定义系统iso镜像
一.制作自己的ISO启动盘篇 在需要安装特定系统的时候,我们使用原版的linux系统盘镜像来安装,需要手动操作N多步,在机器非常多的环境下,这种方式显然不理想,这是我我们就需要制作我们特定的系统盘来简 ...
- 帝都之行5day:还是工作上的事
前两天开始面试找工作,周一整好简历,学历不行也没办法,但还是如实写了,自己看了一下,觉得还凑合,毕竟还是有几年经验的,就开始投了 选了十来个智联推荐的企业,然后把简历设为公开,开始等消息吧…… 投递成 ...
- Codeforces Round #446 Div1 E
题目大意 有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\). 求ans的期望. 分析 发现,造成的伤害就是原来的ai的积减去k轮操作后的 ...
- Python身份运算符
运算符 描述 实例 is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False is not ...
- LibreOffice/Calc:取消单元格中的超链接
造冰箱的大熊猫@cnblogs 2019/2/27 在LibreOffice Calc的表格中输入电子邮箱地址或者网址后,软件会自动将输入内容转换为超链接形式显示.在某些情况下这种自动转换并非用户所 ...
- 灰度图像--图像增强 Robert算子、Sobel算子
学习DIP第36天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...
- Minimal Labels
Minimal Labels 这个题需要用到拓扑排序的思维,但是这个题还有一个条件--字典序最小,因此可以用一个递增的优先队列来维护,每找到一个入度为 0 的点就把它 push 进去因而每一次判断的点 ...
- Pycharm添加python2解释器
Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存) conda info -e 查看python2的路径 Pycha ...
- 阿里云OSS细粒度权限控制
做下工作记录: 自定义安全策略,然后授权即可 { ", "Statement": [ { "Effect": "Allow", & ...