[英]Convert image byte[] to a file
我正在嘗試將圖像(png,jpg,tiff,gif)轉換為磁盤上的文件。將其存儲在文件上后查看時,看不到文件。
這是我根據其他論壇討論嘗試過的一些代碼:
byte[] inFileName = org.apache.commons.io.FileUtils.readFileToByteArray(new File("c:/test1.png"));
InputStream inputStream = new ByteArrayInputStream(inFilename);
..String fileName="test.png";
Writer writer = new FileWriter(fileName);
IOUtils.copy(inputStream, writer,"ISO-8859-1");
這將創建一個我看不到的png文件。
我嘗試根據其他討論使用ImageIO,但無法正常工作,感謝您的幫助。
Image inImage = ImageIO.read(new ByteArrayInputStream(inFilename));
BufferedImage outImage = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_RGB);
OutputStream os = new FileOutputStream(fileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
//encoder.encode(inImage);
您應該將其直接寫入FileOutputStream
。
InputStream input = new ByteArrayInputStream(bytes);
OutputStream output = new FileOutputStream(fileName);
IOUtils.copy(input, output);
圖像是二進制數據,而不是字符數據。 您不應該使用Writer
,它用於字符數據,而應該使用OutputStream
,它用於二進制數據。 只要您不想操縱圖像, BufferedImage
和JPEGImageEncoder
都是毫無意義的。
你想做什么; 讀取PNG圖像並將其另存為JPEG嗎?
您的第一個代碼段不起作用,因為您正在使用Writer
寫入數據。 Writer
僅適用於寫入文本文件。 PNG和JPEG文件包含二進制數據,而不是文本。
您可以使用ImageIO API加載圖像:
BufferedImage img = ImageIO.read(new File("C:/test.png"));
然后使用ImageIO API以另一種格式編寫它:
ImageIO.write(img, "jpg", new File("C:/test.jpg"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.