package com.util;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import javax.imageio.ImageIO;
import org.apache.commons.codec.Decoder;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.util.encoders.UrlBase64;
import org.bouncycastle.util.encoders.UrlBase64Encoder;
public class ImgErToFileUtil {
//private static Decoder decoder = ;
/**
* 将接收的字符串转换成图片保存
* @param imgStr 二进制流转换的字符串
* @param imgPath 图片的保存路径
* @param imgName 图片的名称
* @return
* 1:保存正常
* 0:保存失败
*/
public static int saveToImgByStr(String imgStr,String imgPath,String imgName){
try {
System.out.println("===imgStr.length()====>" + imgStr.length()
+ "=====imgStr=====>" + imgStr);
} catch (Exception e) {
e.printStackTrace();
}
int stateInt = 1;
if(imgStr != null && imgStr.length() > 0){
try {
// 将字符串转换成二进制,用于显示图片
// 将上面生成的图片格式字符串 imgStr,还原成图片显示
// byte[] imgByte = hex2byte( imgStr );
System.out.println(imgStr);
byte[] imgByte=UrlBase64.decode(imgStr);//imgStr.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(imgByte);
//InputStream in = new ByteArrayInputStream(imgByte);
//InputStream in=new StringBufferInputStream(str);
File file=new File(imgPath,imgName);//可以是任何图片格式.jpg,.png等
FileOutputStream fos=new FileOutputStream(file);
byte[] b = new byte[1024];
int nRead = 0;
while ((nRead = in.read(b)) != -1) {
fos.write(b, 0, nRead);
}
fos.flush();
fos.close();
in.close();
} catch (Exception e) {
stateInt = 0;
e.printStackTrace();
} finally {
}
}
return stateInt;
}
/**
* 将二进制转换成图片保存
* @param imgStr 二进制流转换的字符串
* @param imgPath 图片的保存路径
* @param imgName 图片的名称
* @return
* 1:保存正常
* 0:保存失败
*/
public static int saveToImgByBytes(File imgFile,String imgPath,String imgName){
int stateInt = 1;
if(imgFile.length() > 0){
try {
File file=new File(imgPath,imgName);//可以是任何图片格式.jpg,.png等
FileOutputStream fos=new FileOutputStream(file);
FileInputStream fis = new FileInputStream(imgFile);
byte[] b = new byte[1024];
int nRead = 0;
while ((nRead = fis.read(b)) != -1) {
fos.write(b, 0, nRead);
}
fos.flush();
fos.close();
fis.close();
} catch (Exception e) {
stateInt = 0;
e.printStackTrace();
} finally {
}
}
return stateInt;
}
/**
* 二进制转字符串
* @param b
* @return
*/
public static String byte2hex(byte[] b) // 二进制转字符串
{
StringBuffer sb = new StringBuffer();
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1) {
sb.append("0" + stmp);
} else {
sb.append(stmp);
}
}
return sb.toString();
}
/**
* 字符串转二进制
* @param str 要转换的字符串
* @return 转换后的二进制数组
*/
public static byte[] hex2byte(String str) { // 字符串转二进制
if (str == null)
return null;
str = str.trim();
int len = str.length();
if (len == 0 || len % 2 == 1)
return null;
byte[] b = new byte[len / 2];
try {
for (int i = 0; i < str.length(); i += 2) {
b[i / 2] = (byte) Integer
.decode("0X" + str.substring(i, i + 2)).intValue();
}
return b;
} catch (Exception e) {
return null;
}
}
public static void base64StringToImage(String base64String,String imgPath,String imgName){
try {
byte[] bytes1 = UrlBase64.decode(base64String);
//Base64.decodeBase64(base64String)
// byte[] bytes1 = base64String.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage bi1 =ImageIO.read(bais);
File w2 = new File(imgPath,imgName);//可以是jpg,png,gif格式
ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//String imgStr="/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAB+AGYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDv6KKKACikZlQZZgo9Sa53WPGNjp4aOHM04ONuMAfjQBvXFxFbRGWeRY0HUsa5++8Y2EIYW772AJyRwa4rXPFN3qyeW+2NB0C1zxPFArno1t4+gkf94hUfSuh0zxBp+pcQTANjOG4rxbJqWC4lt5BJE5Vh0IobC57uCD0INLXk+leLr+2uYzLIXToQx616Np2tW18i4dVYj1oGaVFFFABRRRQAVFdXEdrA00zbUUVLXC+Otdw32CBuB98j1oAyfEnimXU5AluWhiTsOprmHd2YlmJJ9aU5JpQhakIiam4q/FYySDO2ny6eUUHbSuPlM2kqaSFlkK46Uvkt6U7hYgrS0/VprL7nc881nsCDSGgR6p4c8SfbIFSYDd9e1dQDkZFePeG7lYrxFY4DccV67Ad0CHrxTAkooooGMlkEUTOeijNePavKbjUZpS27cxP0r167RpLSVE+8ykCvHbyNobiRGGGViCKAK+0AZrR0iwa6k3kfJWegLcHucV22iWwhs046iok7FRVx9vpiKuMUs+lI/GOK1Y8CpTzWaZvyo5GXQle4Yhe/pUn9goFJIyceldN5eGJ9aSTAHNO4uVHCaloxii3ovPesCRCjYIr0u7WOWIqxGDXI6xpyxgvGOKaZnKKMazOLmM5x8wr2fRJTLpcLEgnGODXimMMK9T8A3Dz6IQ5zsbArUyOnooooGFeWeKbKS31WcsDtLkhiMZr1OuX8ZWP20wKrlWAJAxnNF7Ba557aoXuo4+5YV3m144RHCOR3rjrW3a21yGOTghsGu7UhV3Gs5M1gioLW/wA7xMP92rNtNMrbJ4xn161WuNUMD4MbYPQ4q9BI0q5cEH0NSaWLOVxnNZ175sjFIyQD3FXW2iM4qEtsTcKQGS2lT43NO5PocVnXkUnlyRSEnHTNa0mrZuGj8tyVznpx09/eq91+/hZ++KaJktDg2XmvRvhxHIumzu2fLZ/l/IVwRhaS9eJOu7ivVPCMH2fQIYyMEE5+taJmNjaoooqhBWVrUJzFcA8JlT+NatV76D7RaOnfqKTV0VF2ZwWrW6/29Zyr3yTXSxplcVl3Ni0rLLxmNgV/PkVswYIBrJm6Qn2ZGAyORTmjCAkVPjmq9xJjKikUQO52EU6ECSMA9qjdH8otRaMeAaSAHtEVmYKCT3qncQBISta7nBrOvyApNMlo5Kxsw2tTkjhASPr/AJzXo+hRtHpcQbHzZbj0NcZYRt9ollCZMj7V9+1d/bxiG3jjUYCqBitImMtCSiiirICiiigDA1sR2BSViQkrhB7E063OFFat/ZQ39sYZ13LkEfUVk7TExVuoNZyRtCVy0GG2qd3D9pRo1kePPO9DgipC521CbgIcc1marUa0E32byBMwxx5nemW0RgCozlyvG89TUpuVxyaiM6M2AeaAehZmlAB5rMu5NwIqWZznFR+V5kkaLkkuAcemeaCWaHh+y3qty4IQD5AeM10FNjRY41RRhVGAKdW6VjnbuFFFFMQUUUUAFZerIEdJAAN3Bq5f30GnWj3Ny4SNBn6+1cJF4nudX16NCBHancFQdcY4J96mWxUdzpUO5KieIBskZFOXKNjPy1Y3KVyDWRunYoyLERxH+lQxwqJQdoFaBVTUE7JEpJOKBtlW5IEhwelWtEhNxeCYH5Ijz9axpJmnnITOzuRUkviD+xNNlW2g3zM/BPQDFOO5nJ6Hc0V5rpfjnUIHzebbiNjyMYI+lehWF7BqFolzbOHjcZFbGJYooooAKx9U8S6ZpquHuFkmXjyo+Tn+lcJqfi/Vb1SqyiCMggrFxn8etc8WJoA19f1651u4Dy/u4k+5EpyB7/WoNBcLq8e7uCBWeDxT4JGhnjkX7wYUmC3PUVIkSmbJB9xse1UNPu3ZBmtNH3N0xWbjY1uVpGuV+6qn8apTRzTt+8Yj2HStiRRVcqN9SUUkt1t4fl79a5/WLlI43XgsTxXS6g/lW7kDOBXn99cNcXDMw6dB6VUdyZbFYcGtbRtfvNGlzbuGjb70bdD/AIGsmlArQxPZNH1m11e0E0DgH+ND1U+horyO1vLm0Zjb