C# 图片按比例进行压缩
1、对图片进行压缩,保存在本地
对于一个200k的png文件按0.6的缩放比例进行压缩,压缩后的大小为20k左右
对于一个80k的jpg文件按0.6的缩放比例压缩,压缩后为13k左右
public void imageZoom(string name, Double zoomScale){Bitmap btImage = new Bitmap(name);Image serverImage = btImage;int width = (int)(serverImage.Width * zoomScale);int height = (int)(serverImage.Height * zoomScale);//画板大小int finalWidth = width, finalHeight = height;int srcImageWidth = serverImage.Width;int srcImageHeight = serverImage.Height;if (srcImageWidth > srcImageHeight){finalHeight = srcImageHeight * width / srcImageWidth;}else{finalWidth = srcImageWidth * height / srcImageHeight;}//新建一个bmp图片Image newImage = new Bitmap(width, height);//新建一个画板Graphics g = Graphics.FromImage(newImage);//设置高质量插值法g.InterpolationMode = InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode = SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.White);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(serverImage, new Rectangle((width - finalWidth) / 2, (height - finalHeight) / 2, finalWidth, finalHeight), 0, 0, srcImageWidth, srcImageHeight, GraphicsUnit.Pixel);//以jpg格式保存缩略图MemoryStream msSaveImage = new MemoryStream();newImage.Save(@"D:\1.png",ImageFormat.Jpeg);serverImage.Dispose();newImage.Dispose();g.Dispose();}
private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.ShowDialog();imageZoom(ofd.FileName,0.6);}
2、对图片进行压缩,转换成Base64后进行传输,可测量字符串长度来对比
对一张图片转换成base64后,测量base64字符串的长度,对于一个80k的图片,压缩前长度为110800多,压缩后长度不到20000,减小了很多,便于传输。
网上有关于对字符串进行压缩的,那是针对纯字符串,对于已经转换成base64的字符串,使用GZipStream类来压缩数据基本上没有效果。
public string ImageToBase64(string name,Double zoomScale){Bitmap btImage = new Bitmap(name);Image serverImage = btImage;int width = (int)(serverImage.Width * zoomScale);int height = (int)(serverImage.Height * zoomScale);//画板大小int finalWidth = width, finalHeight = height;int srcImageWidth = serverImage.Width;int srcImageHeight = serverImage.Height;if (srcImageWidth > srcImageHeight){finalHeight = srcImageHeight * width / srcImageWidth;}else{finalWidth = srcImageWidth * height / srcImageHeight;}//新建一个bmp图片Image newImage = new Bitmap(width, height);//新建一个画板Graphics g = Graphics.FromImage(newImage);//设置高质量插值法g.InterpolationMode = InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode = SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.White);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(serverImage, new Rectangle((width - finalWidth) / 2, (height - finalHeight) / 2, finalWidth, finalHeight), 0, 0, srcImageWidth, srcImageHeight, GraphicsUnit.Pixel);//以jpg格式保存缩略图MemoryStream msSaveImage = new MemoryStream();newImage.Save(msSaveImage, ImageFormat.Jpeg);serverImage.Dispose();newImage.Dispose();g.Dispose();byte[] imageBytes = msSaveImage.ToArray();msSaveImage.Close();return Convert.ToBase64String(imageBytes);}
相关文章:
C# 图片按比例进行压缩
1、对图片进行压缩,保存在本地 对于一个200k的png文件按0.6的缩放比例进行压缩,压缩后的大小为20k左右 对于一个80k的jpg文件按0.6的缩放比例压缩,压缩后为13k左右 public void imageZoom(string name, Double zoomScale){Bitmap btImage …...
猜猜 JavaScript 输出:(! + [] + [] + ![]).length
一起猜 最近看到一个很有意思的题,直接来看,下面这段代码的打印结果是什么? console.log((! [] [] ![]).length) 猜猜看,你的答案是什么,打在评论区。 我的答案是 undefined,正如我的英文名 为什么呢&a…...
MTK Android12静默安装接口
该文档就是在android12系统上提供一个广播接收器,app端发送一个广播,并且带入apk的地址就可以实现安装 1、广播注册 frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java 首先要导入的依赖 import android.app.P…...
基于电容电流前馈与电网电压全前馈的三相LCL并网逆变器谐波抑制Simulink仿真
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Python数据攻略-Pandas与统计数据分析
统计学在数据分析中到底有多重要?在数据分析的世界里,统计学扮演着一角色。想象一下你是《三国志》游戏的数据分析师,任务是找出哪个武将最受玩家欢迎,哪些战役最具挑战性等。 你怎么做呢?这就需要统计学的力量了。 文章目录 基础统计方法描述性统计方差和标准差相关性和…...
【gcc】RtpTransportControllerSend学习笔记 1
本文是大神 https://www.cnblogs.com/ishen 的文章的学习笔记。主要是大神文章: webrtc源码分析(8)-拥塞控制(上)-码率预估 的学习笔记。大神的webrtc源码分析(8)-拥塞控制(上)-码率预估 详尽而具体,堪称神作。因为直接看大神的文章,自己啥也没记住,所以同时跟着看代码。跟…...
若依分离版-前端使用
1 执行 npm install --registryhttps://registry.npm.taobao.org,报错信息如下 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: ktg-mes-ui3.8.2 npm ERR! Found: vue2.6.12 npm ERR! node_modu…...
微信小程序-2
微信开发文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ 一、app.js中的生命周期函数与globalData(全局变量) 指南 - - - 小程序框架 - - - 注册小程序 删除app.js里的东西,输入App回车,调用生命周期 选项 - - - 重新打开此项目…...
卷积神经网络的发展历史-ResNet
ResNet的产生 2015 年,Kaiming He 提出了ResNet(拿到了 2016 年 CVPR Best Paper Award),不仅解决了神经网络中的退化问题还在同年的ILSVRC和COCO 竞赛横扫竞争对手,分别拿下分类、定位、检测、分割任务的第一名。 R…...
基于瞬时无功功率ip-iq的谐波信号检测Simulink仿真
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
node安装,nvm管理器
一、下载nvm,nvm-setup.exe https://github.com/coreybutler/nvm-windows/releases 二、配置NodeJS下载代理镜像(可选) 可以在NVM安装根目录下的setting.txt文件中,配置NodeJS下载代理镜像,解决在线安装NodeJS时速度…...
华为云云耀云服务器L实例评测|Ubuntu云锁防火墙安装搭建使用
华为云云耀云服务器L实例评测|Ubuntu安装云锁防火墙对抗服务器入侵和网络攻击 1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格,满足您对成本、性能及技术创新的诉求。云耀云服务器L…...
C# OpenCvSharp 实现迷宫解密
效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms;namespace OpenCvSharp_实现迷宫解密 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e…...
趣味工具箱小程序源码
趣味工具箱小程序源码,支持功能去水印,精选壁纸,图片压缩,文字生成二维码,图片加水印,模拟来电,手持弹幕,掷骰子…等 使用小工具,一个小程序有几十个功能。 源码下载&am…...
互联网Java工程师面试题·Redis 篇·第二弹
目录 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis…...
FreeRTOS入门教程(信号量的概念及API函数使用)
文章目录 前言一、什么是信号量二、信号量种类和对比三、信号量和队列的区别四、信号量相关的函数1.创建函数2.删除函数3.获取和释放信号量函数 总结 前言 本篇文章正式带大家开始学习什么是信号量,并且掌握信号量函数的基本使用方法,并且将和队列进行一…...
简易版Pycharm(2023)+Conda开发环境配置教程
困 扰 不知道为什么,自从Pycharm更新了新的版本以后,在Pycharm中为项目工程配置Python解释器环境时,总是不能像以前那么方便的配置。 比如,当前Conda中有十个不同的开发环境,每个环境一个名称,比如&#x…...
深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(二)
前言 在上一篇深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)_往事如烟隔多年的博客-CSDN博客 文章中对SpringBoot整合Quartz做了初步的介绍以及提供了一个基本的使用例子,因为实际各自的需求任务不尽相同因此并…...
小谈设计模式(22)—单例模式
小谈设计模式(22)—单例模式 专栏介绍专栏地址专栏介绍 单例模式点睛所在优缺点分析优点确保只有一个实例全局访问点节省资源线程安全 缺点难以扩展对象的生命周期单一职责原则隐藏依赖关系 Java程序实例实例a分析实例b,更安全分析优化 ——“…...
华为OD机考算法题:分班
题目部分 题目分班难度易题目说明幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。 小朋友的编号为整数,与前一位小朋友同班用 Y 表示,不同班用 N 表示…...
Go语言模板方法模式:算法骨架
Go语言模板方法模式:算法骨架 1. 模板方法实现 type AbstractClass struct{}func (a *AbstractClass) TemplateMethod() {a.Step1()a.Step2()a.Step3() }func (a *AbstractClass) Step1() {} func (a *AbstractClass) Step2() {} func (a *AbstractClass) Step3() {…...
STHS34PF80红外存在检测:InfraredPD算法库集成与调试实战
1. 项目概述与核心价值最近在折腾一个智能家居的节能项目,核心需求是让设备能精准判断房间里到底有没有人,而不是简单地检测到有物体移动就触发。市面上很多基于PIR(被动红外)的运动传感器,对于静止不动的人体识别效果…...
VSCode性能优化实战:回归轻量编辑器,提升开发效率
1. 项目概述:为什么我们需要一个“经典体验”的VSCode? 如果你是一个从Sublime Text、Notepad或者更早的编辑器时代走过来的开发者,最近打开Visual Studio Code时,可能会感到一丝陌生。没错,VSCode变得越来越强大&…...
基于RK3568J核心板的隔离网闸设计:硬件选型、系统架构与工程实践
1. 项目概述:当嵌入式核心板遇上网络安全“守门员”最近几年,“科技与狠活”这个词火遍全网,让大家对各种产品的成分和安全性都多了一份审视。其实,除了我们吃进嘴里的东西,另一个看不见摸不着却至关重要的领域——网络…...
Proxima向量检索库:硬件优化与量化技术实战解析
1. 项目概述:一个为现代开发者打造的“近邻”代码库 最近在GitHub上看到一个挺有意思的项目,叫“Zen4-bit/Proxima”。乍一看这个标题,可能会有点摸不着头脑。“Zen4-bit”像是一个用户名或者某种架构的代号,而“Proxima”则让人联…...
AI技能库实战:模块化设计赋能博客创作自动化工作流
1. 项目概述:一个面向AI时代的博客技能开源库最近在GitHub上闲逛,发现了一个挺有意思的项目,叫inblog-inc/inblog-ai-skills。光看这个名字,就透着一股子“务实”的味道。它不是又一个教你如何调参炼丹的AI模型库,也不…...
MacBook远程控制Win10打游戏?聊聊Microsoft Remote Desktop的那些隐藏玩法和限制
MacBook远程控制Win10打游戏?Microsoft Remote Desktop的极限性能测试与实战技巧 当MacBook用户需要临时调用Windows电脑的资源时,远程桌面工具往往成为救急首选。但你是否想过,这类工具能否胜任游戏、视频剪辑甚至3D建模等高图形负载任务&am…...
3DMax对齐功能全解析:从基础操作到高阶建模实战
1. 3DMax对齐功能基础入门 刚接触3D建模的新手最常遇到的困扰就是:为什么我的模型总是对不齐?记得我第一次用3DMax做建筑模型时,花了两小时都没能把一扇窗户准确地装到墙面上。直到后来掌握了对齐工具,才发现原来这种问题5秒钟就能…...
dingtalk-openclaw-connector:打通钉钉与AI的插件化连接器架构解析
1. 项目概述:一个打通钉钉与AI能力的“连接器”如果你正在企业内部尝试部署AI应用,比如一个能自动处理工单的智能客服,或者一个能帮你分析周报的智能助手,那么你大概率会遇到一个核心难题:如何让AI能力无缝融入员工每天…...
ARM PMU中断控制寄存器PMINTENCLR/PMINTENSET详解
1. ARM性能监控单元(PMU)架构概述 在现代处理器设计中,性能监控单元(Performance Monitoring Unit, PMU)是实现系统级性能分析和优化的关键组件。ARM架构从v7开始引入标准化的PMU设计,并在v8/v9架构中持续演进。PMU的核心功能是通过一组可编程事件计数器…...
