Redis 存储图片 [base64/url/path]vs[object]

一、base64图片编解码

  基本流程:从网络获取下载一张图片,然后base64编码,再base64解码,存到本地E盘根目录下。   

  

import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import javax.imageio.ImageIO;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;@SuppressWarnings(“restriction”){/*** 将网络图片进行Base64位编码** @param imageUrl*图片的url路径,,如* @return*/public static String encodeImgageToBase64(URL imageUrl) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理ByteArrayOutputStream outputStream = null;try {BufferedImage bufferedImage = ImageIO.read(imageUrl);outputStream = new ByteArrayOutputStream();ImageIO.write(bufferedImage, “jpg”, outputStream);} catch (MalformedURLException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串}/*** 将本地图片进行Base64位编码** @param imageFile*图片的url路径,如F:/…..xx.jpg* @return*/public static String encodeImgageToBase64(File imageFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理ByteArrayOutputStream outputStream = null;try {BufferedImage bufferedImage = ImageIO.read(imageFile);outputStream = new ByteArrayOutputStream();ImageIO.write(bufferedImage, “jpg”, outputStream);} catch (MalformedURLException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串}/*** 将Base64位编码的图片进行解码,并保存到指定目录** @param base64*base64编码的图片信息* @return*/(String base64, String path,String imgName) {BASE64Decoder decoder = new BASE64Decoder();try {FileOutputStream write = new FileOutputStream(new File(path+ imgName));byte[] decoderBytes = decoder.decodeBuffer(base64);write.write(decoderBytes);write.close();} catch (IOException e) {e.printStackTrace();}}(String [] args){URL url = null;try {url = new URL(“http://www.faceplusplus.com.cn/wp-content/themes/faceplusplus/assets/img/demo/9.jpg”);} catch (MalformedURLException e) {e.printStackTrace();}String encoderStr = Base64ImageUtils.encodeImgageToBase64(url);System.out.println(encoderStr);Base64ImageUtils.decodeBase64ToImage(encoderStr, “E:/”, “football.jpg”);}}

控制台输出的base64编码后的结果:

查看E盘根目录:

二、Redis对象object存储

  Redis存储对象数据的时候,要进行对象的序列化与反序列化操作。   

package RedisObject;import java.io.Serializable;{serialVersionUID = 1L;private int id;private String name;public Person() {}public Person(int id, String name) {super();this.id = id;this.name = name;}() {return id;}(int id) {this.id = id;}public String getName() {return name;}(String name) {this.name = name;}}package RedisObject;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;{/*** 序列化** @param object* @return*/[] serialize(Object object) {ObjectOutputStream oos = null;ByteArrayOutputStream baos = null;try {baos = new ByteArrayOutputStream();oos = new ObjectOutputStream(baos);oos.writeObject(object);byte[] bytes = baos.toByteArray();return bytes;} catch (Exception e) {}return null;}/*** 反序列化** @param bytes* @return*/public static Object unserialize(byte[] bytes) {ByteArrayInputStream bais = null;try {bais = new ByteArrayInputStream(bytes);ObjectInputStream ois = new ObjectInputStream(bais);return ois.readObject();} catch (Exception e) {}return null;}}package RedisObject;import redis.clients.jedis.Jedis;{private static Jedis jedis = null;/*** 初始化Jedis对象** @throws Exception*/public PersonRedisTest() {jedis = new Jedis(“127.0.0.1”, 6379);}/*** 序列化写对象, 将Person对象写入Redis中**/() {jedis.set(“person:100”.getBytes(),SerializeUtil.serialize(new Person(100, “zhangsan”)));jedis.set(“person:101”.getBytes(),SerializeUtil.serialize(new Person(101, “bruce”)));}/*** 反序列化取对象, 用Jedis获取对象**/() {byte[] data100 = jedis.get((“person:100”).getBytes());Person person100 = (Person) SerializeUtil.unserialize(data100);System.out.println(String.format(“person:100->id=%s,name=%s”,person100.getId(), person100.getName()));byte[] data101 = jedis.get((“person:101”).getBytes());Person person101 = (Person) SerializeUtil.unserialize(data101);System.out.println(String.format(“person:101->id=%s,name=%s”,person101.getId(), person101.getName()));}(String[] args) {PersonRedisTest rt = new PersonRedisTest();rt.setObject();rt.getObject();}}

运行main函数结果:

查看Redis存储的数据:

三、Redis存储图片绚丽的民族风情,悠久的历史文化。抛开尘世的纷扰,

Redis 存储图片 [base64/url/path]vs[object]

相关文章:

你感兴趣的文章:

标签云: