import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
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.util.Base64;
import javax.imageio.ImageIO;
/**
* @author: kyTang
* @date: 2021/2/4 14:35
* @Description: 两种方式的转化
*/
public class TestDemo {
public static void main(String[] args) {
File img = new File("/Users/Downloads/test.jpg");
byte[] bytes = imgToByte(img);
String encodeStr = new String(Base64.getEncoder().encode(bytes));
byte[] decodeBytes = Base64.getDecoder().decode(encodeStr);
File file = byteToImg(decodeBytes);
}
static byte[] fileToByte(File img){
byte[] bytes = new byte[0];
try(
InputStream in = new BufferedInputStream(new FileInputStream(img))
) {
bytes = new byte[in.available()];
in.read(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return bytes;
}
static byte[] imgToByte(File img){
byte[] bytes = new byte[0];
try(
ByteArrayOutputStream baos = new ByteArrayOutputStream()
){
BufferedImage bi = ImageIO.read(img);
ImageIO.write(bi, "png", baos);
bytes = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return bytes;
}
static File byteToFile(byte[] bytes){
File img = createBlackImgFile();
try (
InputStream in = new ByteArrayInputStream(bytes)
){
FileOutputStream fos = new FileOutputStream(img);
byte[] b = new byte[1024];
int nRead = 0;
while ((nRead = in.read(b)) != -1) {
fos.write(b, 0, nRead);
}
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return img;
}
static File byteToImg(byte[] bytes){
File img = createBlackImgFile();
try(
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
){
//不管输出什么格式图片,此处不需改动
ImageIO.write(ImageIO.read(byteArrayInputStream), "png", img);
} catch (Exception e) {
e.printStackTrace();
}
return img;
}
static File createBlackImgFile(){
File targetDir = new File("/Users/Downloads");
if(!targetDir.exists()){
targetDir.mkdirs();
}
//可以是jpg,png,gif格式
File img = new File(targetDir.getPath() + File.separator + "test.png");
int i = 1;
//若文件存在
while(img.exists()){
String newFilename = "test("+i+").png";
String parentPath = img.getParent();
img = new File(parentPath + File.separator + newFilename);
i++;
}
return img;
}
}
图片和byte数组互转
最新推荐文章于 2025-03-14 10:47:36 发布