java base64 压缩_在线等(急)Base64(带压缩)出问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
发表于 2018-09-06 15:34:20 楼主用base64进行编码。有一个206kb的jpg文件第一次调用方法可以通过,第二次是一个80kb的jpg文件反而不能通过了。我将两次的图片通过反编码成图片反而80kb的图片更大。只有206kb的图片解码是正常的。
/**
* 本地图片转换成base64字符串
* @param imgFile图片本地路径
* @return
*
* @author ZHANGJL
* @dateTime 2018-02-23 14:40:46
*/
public static String ImageToBase64ByLocal(String imgFile) {
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
byte[] compressPicByQuality = compressPicByQuality(data,1);
return encoder.encode(compressPicByQuality);// 返回Base64编码过的字节数组字符串
}
/**
* @Title: compressPicByQuality
* @Description: 压缩图片,通过压缩图片质量,保持原图大小
* @param quality:0-1
* @return byte[]
* @throws
*/
public static byte[] compressPicByQuality(byte[] imgByte, float quality) {
byte[] inByte = null;
try {
ByteArrayInputStream byteInput = new ByteArrayInputStream(imgByte);
BufferedImage image = ImageIO.read(byteInput);
// 如果图片空,返回空
if (image == null) {
return null;
}
// 得到指定Format图片的writer
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");// 得到迭代器
ImageWriter writer = (ImageWriter) iter.next(); // 得到writer
// 得到指定writer的输出参数设置(ImageWriteParam )
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // 设置可否压缩
iwp.setCompressionQuality(quality); // 设置压缩质量参数
iwp.setProgressiveMode(ImageWriteParam.MODE_DISABLED);
ColorModel colorModel = ColorModel.getRGBdefault();
// 指定压缩时使用的色彩模式
iwp.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel,
colorModel.createCompatibleSampleModel(16, 16)));
// 开始打包图片,写入byte[]
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 取得内存输出流
IIOImage iIamge = new IIOImage(image, null, null);
// 此处因为ImageWriter中用来接收write信息的output要求必须是ImageOutput
// 通过ImageIo中的静态方法,得到byteArrayOutputStream的ImageOutput
writer.setOutput(ImageIO.createImageOutputStream(byteArrayOutputStream));
writer.write(null, iIamge, iwp);
inByte = byteArrayOutputStream.toByteArray();
} catch (IOException e) {
System.out.println("write errro");
e.printStackTrace();
}
return inByte;
java base64 压缩_在线等(急)Base64(带压缩)出问题相关推荐
- java变形金刚中文版_[原创]RC4、Base64魔改看雪CTF-变形金刚学习笔记
前言 最近在研究某某app的数据库,发现自己在so层的调试比较薄弱,专门找了看雪的CTF-变形金刚来学习.希望在用ida调试so方面有所突破. 利用国庆期间整理成笔记.技术不成熟或许描述的不够清晰请大 ...
- java bzip2 压缩_压缩工具之gzip-bzip2-xz
win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.t ...
- java zip压缩_压缩工具
由于rar4版本以上的无法通过java代码进行解压,采用调用本地程序来进行解压 第一步:下载winrar 第二步:配置环境变量,只需要配置到安装目录即可,,重新打开命令窗口 第三步:单个文件进行测试 ...
- java 文本压缩_[Java基础]Java使用GZIP进行文本压缩
import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...
- java blob压缩_如何从Oracle中用Java压缩的BLOB列中提取XML文档
我在Oracle 11G(11.1)中有一个表,它有一个包含XML文档的BLOB列. XML文档已使用Java程序写入表中,并已使用java.util.zip平减器进行序列化和压缩. 有没有简单的方法 ...
- java编程学习方法_在线学习Java编程的最佳方法
java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...
- java http 压缩_解压HTTP API的GZIP压缩数据
1.对Java后端的请求HttpURLConnection对象中的消息头设置压缩 connection.setRequestProperty("Accept-Encoding", ...
- java 对象压缩_理解Java对象:要从内存布局及底层机制说起,话说....
前言 大家好,又见面了,今天是JVM专题的第二篇文章,在上一篇文章中我们说了Java的类和对象在JVM中的存储方式,并使用HSDB进行佐证,没有看过上一篇文章的小伙伴可以点这里:< 这篇文章主要 ...
- java文字云_在线文字云制作工具
网站简介: WordLe:在线文字云制作工具是一款免费的文字云在线生成器(系统需预装载JAVA),它的优点是可以快速的分析文本或网站的词频,并以多种多种风格展示,且支持文字字体选择和用户自定义颜色. ...
最新文章
- the art of java 源代码_请不要再说Java中final方法比非final性能更好了
- mysql启动warning: World-writable config file
- 用jsphtml:file实现一个文件上传的例子,而且有验证
- go语言的map以及红黑树的map
- vsc 搜索特定代码_特定问题的通用解决方案:何时编写代码以及何时编写代码...
- sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘
- 1221. 分割平衡字符串
- UIPageControl 分页控件-IOS开发
- 无需埋点的移动数据分析平台GrowingIO V1.0
- ubuntu 18.04 ROS melodic 尝试 ROS CANOPEN 控制 AGV
- webpy使用笔记(一)
- mysql的压缩版安装
- 算法面试题 java_【面试算法题】Java Stack 类的使用
- 正点原子STM32F4笔记
- Pygame教程系列一:快速入门篇
- 百战RHCE(第一战:Linux基础命令1)
- 2021-09-18 Android repo 镜像服务器搭建
- 阿里云--实人认证的接口
- Nature新子刊创刊首发综述论文:这是你常听到的贝叶斯统计与建模
- 嵌入式消息队列artemis