图片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字符串互转的更多相关文章

  1. java 图片转base64字符串、base64字符串转图片

    java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...

  2. java实现图片与base64字符串之间的转换

    package cn.com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...

  3. Base64编码 图片与base64编码互转

    package com.education.util; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import jav ...

  4. 将图片转换为Base64字符串公共类抽取

    public class ImageToBase64 { //图片转化成base64字符串 public static String GetImageStr(String path,int width ...

  5. 字符串编码、Base64字符串 互转

    /// <summary>  /// 将字符串编码为Base64字符串  /// </summary>  /// <param name="str"& ...

  6. c# 图片 与 BASE64 字符串 互相转换。

    using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...

  7. C#和Python 图片和base64的互转

    C#实例代码: /// <summary> /// 图片转base64 /// </summary> /// <param name="bmp"> ...

  8. 图片与base64的互转

    /// <summary>        /// 把图片转换到文本信息        /// </summary>        /// <param name=&quo ...

  9. C# 常用方法——图片转base64字符串

    其他扩展方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// Image 转成 base64 / ...

随机推荐

  1. DebuggerStepThrough特性(c#)

    单步调试程序时,有一些属性和方法不想进入,可以使用DebuggerStepThrough特性 (1)属性 private string word; public string Word { [Syst ...

  2. solr admin界面的监控

    这里可以看到,solr的版本,lucene的版本,jvm的版本,CPU核数,jvm启动参数,还有物理内存占用,交换空间占用,jvm内存占用. 这里可以看到每个core的情况. 这里可以看到java的所 ...

  3. 函数参数-arguments-reset参数

    1.JS中用:arguments 1)存放实参的集合,是一个类似于数组的对象,只有数组的 length,没有数组方法 function add1(a,b,c) { console.log(argume ...

  4. 【转】用win7(64位)远程桌面连接linux(Ubuntu14.04)详细教程

    转自:http://blog.csdn.net/qq754438390/article/details/50042511 亲测,确实是可以.非常感谢原博. 用win7(64位)远程桌面连接linux( ...

  5. Java-WebServiceUtil工具类

    /** * Program : WebServiceUtil.java * Author : leigq * Create : 2010-11-12 上午09:02:05 * * Copyright ...

  6. java——适配器模式、策略模式

    适配器模式: https://www.cnblogs.com/honger/p/5970283.html 策略模式: https://www.jianshu.com/p/3bcf55cf83d3

  7. Python 多线程Ⅱ

    线程模块 Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁. threading 模块提供的其他方法: threadi ...

  8. [Python之路] 闭包

    一.思考一个问题 我们要给定一个x,要求一条直线上x对应的y的值.公式是y = kx+b. 我们需要用k,b来确定这条直线,则我们实现的函数应该有3个参数: def line(k, b, x): pr ...

  9. easyui datagrid 去除单击行选中事件

    转:http://www.xue163.com/588880/39049/390490560.html 解决方案: onClickRow: function (rowIndex, rowData) { ...

  10. HYSBZ - 3813 奇数国 欧拉函数+树状数组(线段树)

    HYSBZ - 3813奇数国 中文题,巨苟题,巨无敌苟!!首先是关于不相冲数,也就是互质数的处理,欧拉函数是可以求出互质数,但是这里的product非常大,最小都2100000,这是不可能实现的.所 ...