首页 > 编程语言 >C# base64字符串转为图片保存到本地

C# base64字符串转为图片保存到本地

时间:2023-06-12 12:12:30浏览次数:41  
标签:huabu min C# max base64 new 字符串 rec 图片

    #region Base64解码图片
        // <summary>
        /// 图片上传 Base64解码
        /// </summary>
        /// <param name="dataURL">Base64数据</param>
        /// <returns>返回一个相对路径</returns>

        public JsonResult DecodeBase64ToImageByPictorialSentencePhoto(string baseUrl)
        {
            baseUrl = baseUrl.Substring(baseUrl.IndexOf(",") + 1);
            byte[] bt = Convert.FromBase64String(baseUrl);//获取图片base64
            string ImageFilePath = "Upload/PictorialSentencePhoto/" + DateTime.Now.ToString("yyyyMMdd");
            string filePath = "";
            using (var ms = new MemoryStream(bt))
            {
                Bitmap bmp = new Bitmap(ms);
         //直接限定图片的宽高 int max_Left = 0; int min_Right =427; int max_Bottom = 748; int min_Top = 0; //最左邊黑邊:0,最右邊黑邊:427 //最上邊黑邊:0,最下邊黑邊:748 //创建一个画框:宽(右黑边起始位置-左黑边最终位置=去除黑边之后的宽度),高(整个图片 的图框) Bitmap huakuang = new Bitmap(min_Right - max_Left, max_Bottom-min_Top); //创建一个画布:宽高和画框一致 Graphics huabu = Graphics.FromImage(huakuang); //清空画布(透明) huabu.Clear(System.Drawing.Color.Transparent); //画布上所要画的位置和大小 RectangleF huabu_rec = new RectangleF(0, 0, min_Right - max_Left, max_Bottom - min_Top); //图片所要裁剪矩形的大小和位置: //x=intLeft(从左黑边最终位置开始),y=0 //width=intRight - intLeft(右黑边起始位置-左黑边最终位置=去除黑边之后的宽度),height=整个图片的高 RectangleF img_rec = new RectangleF(max_Left, 0, min_Right - max_Left, max_Bottom - min_Top); //在画布上的指定位置大小(huabu_rec)画上图片(bmp)的指定部分(img_rec) huabu.DrawImage(bmp, huabu_rec, img_rec, GraphicsUnit.Pixel); if (Directory.Exists(hostingEnvironment.WebRootPath + @"/" + ImageFilePath) == false)//如果不存在就创建文件夹 { Directory.CreateDirectory(hostingEnvironment.WebRootPath + @"/" + ImageFilePath); } string fileName = System.DateTime.Now.ToString("yyyyHHddHHmmss") + ".png"; filePath = @"/" + ImageFilePath + @"/" + fileName;//获取保存后的相对路径 huakuang.Save(hostingEnvironment.WebRootPath + @"/" + ImageFilePath + "/" + fileName, System.Drawing.Imaging.ImageFormat.Png); } return Json(new Result { ReturnValue = filePath });//返回相对路径 } #endregion

 

标签:huabu,min,C#,max,base64,new,字符串,rec,图片
From: https://www.cnblogs.com/QiangQiangDai/p/17474671.html

相关文章

  • hj_screw导出数据库表文档
    #要不要排除掉依赖,需要视项目导入的依赖情况而定.#这要排除掉依赖,主要是因为项目使用的log4j2排除了boot自身的日志具体如下:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>......
  • Python 有S1和S2的字符串,S2是S1的子串,输出S1中不含S2的字符串
     思路:1. 先做替换,把S1与S2相同的子串替换为空2.有坑:第一步替换后,可能会出现新的字符串有包含S1中3.利用递归再去替换1a="tomcatisabigccatatandsmallcacatt-yyds"2b="cat"34defA(a,b):5ifbnotina:#先给个递......
  • 多层螺旋CT行业市场现状研究及未来前景分析报告
    2023-2029全球多层螺旋CT行业调研及趋势分析报告2022年全球多层螺旋CT市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。多层螺旋CT可以对全身组织器官进行检查,比如头部、颈部、胸部、腹部、盆腔......
  • 【区块链】HyperLedger Besu Docker异地组网(续)
    最近有些朋友私信我,说之前《【区块链】HyperLedgerBesuDocker异地组网》中提到使用dockerswarm可以进行异地组网,但实际上在公网层面无法实现。嗯...的确之前我没有说清楚,其实在我实施的过程中还是遇到了比较多的问题的,譬如:国内三大网络运营商对于公网接入会有不同的网络策略;......
  • TCP 协议快被淘汰了,UDP 协议才是新世代的未来?
    TCP协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过TCP协议传输,然而TCP在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折磨时,你可能都不知道这一切可能都是TCP协议造成的。本文会分析TCP协议为什么在弱网环......
  • Ctrl+Space输入法切换状态解决方法
    WindowsRegistryEditorVersion5.00[HKEY_USERS\.DEFAULT\ControlPanel\InputMethod\HotKeys\00000010]"KeyModifiers"=hex:00,c0,00,00"TargetIME"=hex:00,00,00,00"VirtualKey"=hex:ff,00,00,00[HKEY_USERS\.DEFAULT......
  • XXL-JOB手工执行任务报错:msg:xxl-rpc remoting error(Connection refused (Connection
    【问题描述】XXL-JOB手工执行任务报错:msg:xxl-rpcremotingerror(Connectionrefused(Connectionrefused)),forurl  【原因分析】 在xxl-job服务端所在的服务器上面去telnetxxl-job所在的客户端服务器的9986端口,提示拒绝连接:对于端口拒绝连接的问题,应该是网络的问......
  • linux下安装oracle11g
     1.安装前准备  1.创建linux虚拟机  2.linux系统参数设置    1.hosts文件配置    vi/etc/hosts    192.168.1.52.itpuxhsdb    2.配置语言环境    echo"exprotLANG=EN_US">>~/.bash_profile    sour~/.bash_profile    3.准备文......
  • nginx-clojure debug构建简单说明
    实际上参考了官方的构建参数,提供一个debug模式的文件原始配置configurearguments:--prefix=--sbin-path=nginx--conf-path=conf/nginx.conf--error-log-path=logs/error.log--http-log-path=logs/access.log--pid-path=logs/nginx.pid--lock-path=logs/nginx.......
  • nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by prot
    nginx:[emerg]socket()[::]:80failed(97:Addressfamilynotsupportedbyprotocol),遇到这个问题,不用多想,基本都是配置了IPv6监听导致,也就是如下配置server{listen80default_server;listen[::]:80default_server;listen[::]:8......