该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

发表于 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(带压缩)出问题相关推荐

  1. java变形金刚中文版_[原创]RC4、Base64魔改看雪CTF-变形金刚学习笔记

    前言 最近在研究某某app的数据库,发现自己在so层的调试比较薄弱,专门找了看雪的CTF-变形金刚来学习.希望在用ida调试so方面有所突破. 利用国庆期间整理成笔记.技术不成熟或许描述的不够清晰请大 ...

  2. java bzip2 压缩_压缩工具之gzip-bzip2-xz

    win下常见压缩工具:rar  zip  7z linux下常见压缩工具:zip  gz  bz2  xz  tar.gz  tar.bz2  tar.xz gzip 不支持目录压缩 gzip 1.t ...

  3. java zip压缩_压缩工具

    由于rar4版本以上的无法通过java代码进行解压,采用调用本地程序来进行解压 第一步:下载winrar 第二步:配置环境变量,只需要配置到安装目录即可,,重新打开命令窗口 第三步:单个文件进行测试 ...

  4. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  5. java blob压缩_如何从Oracle中用Java压缩的BLOB列中提取XML文档

    我在Oracle 11G(11.1)中有一个表,它有一个包含XML文档的BLOB列. XML文档已使用Java程序写入表中,并已使用java.util.zip平减器进行序列化和压缩. 有没有简单的方法 ...

  6. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  7. java http 压缩_解压HTTP API的GZIP压缩数据

    1.对Java后端的请求HttpURLConnection对象中的消息头设置压缩 connection.setRequestProperty("Accept-Encoding", ...

  8. java 对象压缩_理解Java对象:要从内存布局及底层机制说起,话说....

    前言 大家好,又见面了,今天是JVM专题的第二篇文章,在上一篇文章中我们说了Java的类和对象在JVM中的存储方式,并使用HSDB进行佐证,没有看过上一篇文章的小伙伴可以点这里:< 这篇文章主要 ...

  9. java文字云_在线文字云制作工具

    网站简介: WordLe:在线文字云制作工具是一款免费的文字云在线生成器(系统需预装载JAVA),它的优点是可以快速的分析文本或网站的词频,并以多种多种风格展示,且支持文字字体选择和用户自定义颜色. ...

最新文章

  1. the art of java 源代码_请不要再说Java中final方法比非final性能更好了
  2. mysql启动warning: World-writable config file
  3. 用jsphtml:file实现一个文件上传的例子,而且有验证
  4. go语言的map以及红黑树的map
  5. vsc 搜索特定代码_特定问题的通用解决方案:何时编写代码以及何时编写代码...
  6. sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘
  7. 1221. 分割平衡字符串
  8. UIPageControl 分页控件-IOS开发
  9. 无需埋点的移动数据分析平台GrowingIO V1.0
  10. ubuntu 18.04 ROS melodic 尝试 ROS CANOPEN 控制 AGV
  11. webpy使用笔记(一)
  12. mysql的压缩版安装
  13. 算法面试题 java_【面试算法题】Java Stack 类的使用
  14. 正点原子STM32F4笔记
  15. Pygame教程系列一:快速入门篇
  16. 百战RHCE(第一战:Linux基础命令1)
  17. 2021-09-18 Android repo 镜像服务器搭建
  18. 阿里云--实人认证的接口
  19. Nature新子刊创刊首发综述论文:这是你常听到的贝叶斯统计与建模
  20. 嵌入式消息队列artemis

热门文章

  1. 让FX1.1的NotifyIcon支持BalloonTip(1)
  2. windows 下实现函数打桩:拦截API方式
  3. 《Drupal实战》——1.9 小结
  4. 日本未来投资重点领域是物联网和人工智能应用
  5. LED音乐频谱之输出数据处理
  6. jQuery插件之ajaxFileUpload
  7. 什么是UUID及其实现代码
  8. Microsoft StreamInsight 构建物联网
  9. 打印机通讯 tspl指令_西门子工控设备通讯
  10. java直接内存为什么快_直接内存与 JVM 源码分析