java二进制保存图片_JAVA高级特性——二进制存储图片
import java.io.*;/*** 将图片转为数组,输出成文件,再读取这个文件,获得这个数组,还原成图片
*@authorAdministrator
*
**/
public classText3 {public static voidmain(String[] args) {//获取图片aa.jpg,将图片信息保存到数组b中
byte []b=Text3.imgArry("aa.jpg");//通过数组b写到文件bb.txt中去
Text3.writeByteimg(b, "bb.txt");byte []c=Text3.imgin("bb.txt");
Text3.writeimg(c,"cc.jpg");
}/*** 用字节流获取图片,把字节数组用ByteArrayOutputStream 写到 bao里面去,,可以返回一个字节数组
*@parampath
*@return
*/
public static byte[] imgArry(String path){
InputStream inImg=null;
ByteArrayOutputStream bao=newByteArrayOutputStream();try{
inImg=newFileInputStream(path);byte [] b=new byte[1024];int len=-1;//将图片的所有字节通过数组b读取出来在写到bao里面去
while((len=inImg.read(b))!=-1) {
bao.write(b,0, len);
}//返回bao字节数组
returnbao.toByteArray();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{try{
bao.close();
inImg.close();
}catch(IOException e) {
e.printStackTrace();
}
}return null;
}/*** 用二进制写出图片,保存到文件去
*@paramimgs
*@parampath*/
public static void writeByteimg(byte[]imgs,String path) {
DataOutputStream outimg=null;try{
outimg=new DataOutputStream(newFileOutputStream(path));
outimg.write(imgs);
outimg.flush();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{try{
outimg.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}/*** 读取二进制保存的图片,放到一个字节数组中*/
public static byte[] imgin(String path) {
DataInputStream imgin=null;try{
imgin=new DataInputStream(newFileInputStream(path));//创建一个字节数组,数组长度等于图片返回的实际字节数
byte[] b=new byte[imgin.available()];//读取图片信息放入b中,返回b
imgin.read(b);returnb;
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{try{
imgin.close();
}catch(IOException e) {
e.printStackTrace();
}
}return null;
}/*** 将图片输出*/
public static void writeimg(byte[]img,String path) {
OutputStream ow=null;try{
ow=newFileOutputStream(path);
ow.write(img);
ow.flush();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{try{
ow.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
java二进制保存图片_JAVA高级特性——二进制存储图片相关推荐
- 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记
前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...
- 新书推荐 | Java核心技术 卷II 高级特性(原书第11版)
新书推荐 <Java核心技术 卷II 高级特性(原书第11版)> 长按二维码 了解及购买 全新第11版!针对Java SE9.10.11全面更新!Java领域极具影响力和价值的著作之一,与 ...
- 最新:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明
本书一共分为五个部分:走近Java.自动内存管理.虚拟机执行子系统.程序编译与代码优化. 高效并发.各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴 趣的专题开始阅读,但 ...
- 读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》
本篇带来的是周志明老师编写的<深入理解Java虚拟机:JVM高级特性与最佳实践>,十分硬核! 全书共分为 5 部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行 ...
- Java核心技术卷2 高级特性 学习笔记(5)
参考:Java核心技术卷2 高级特性 第九章 Java技术提供了三种确保安全的机制: 语言设计特性(对数组的边界进行检查,无不受检查的类型转换,无指针算法等). 访问控制机制,用于控制代码能够执行的 ...
- Java高级特性编程及事件_java高级特性是什么
详细内容 java高级特性主要有集合框架及泛型,实用类,输入和输出处理,注解与多线程,网络编程与XML技术. 集合框架 是一套性能优良.使用方便的接口和类(位于java.util包中)解决数组在存储上 ...
- java优先队列_Java高级特性增强-多线程
请戳GitHub原文: https://github.com/wangzhiwubigdata/God-Of-BigData 大数据成神之路系列: 请戳GitHub原文: https://github ...
- 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读
前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开 ...
- java 反射 new class_Java高级特性-反射:不写死在代码,还怎么 new 对象?
反射是 Java 的一个高级特性,大量用在各种开源框架上. 在开源框架中,往往以同一套算法,来应对不同的数据结构.比如,Spring 的依赖注入,我们不用自己 new 对象了,这工作交给 Spring ...
最新文章
- STM32F103C8/BT6最小系统原理图、PCB
- 算法提高课-搜索-DFS之搜索顺序-AcWing 1117. 单词接龙:dfs
- 20201202 《计算感知》武老师 第2节课 笔记
- Code Review 是苦涩但有意思的修行
- 8大排序算法图文讲解
- 常用公有云接入——AZURE
- php globals_PHP $ GLOBALS(超级全局变量),带有示例
- java开发和structs的关系_java---springMVC与strutsMVC的区别
- 从Spark-Shell到SparkContext的函数调用路径过程分析(源码)
- paip.python NameError name 'xxx' is not defined\
- 大数据工程师简历_成为大数据工程师所需的技能
- 如何用计算机函数计算房租,Excel商铺租金模板,租金每两年递增5%,具备收租期、租赁起止期、单价函数自动计算功能...
- Windows DFS
- 工业检测产品中,用到的PPM, DPPM和DPMO的定义
- python搞笑梗_豆瓣9.1、刷爆朋友圈,知道这3个梗就够了
- 2022年终总结-两年Androider的成长之路
- 如何下载并安装turbo pascal 7.0?
- 明哥学习Spring(2)
- STC89C51单片机相比于其他单片机具有那些优点?
- 玩《节奏大师》——换你所爱的歌曲