簡體   English   中英

將圖像字節[]轉換為文件

[英]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 ,它用於二進制數據。 只要您不想操縱圖像, BufferedImageJPEGImageEncoder都是毫無意義的。

你想做什么; 讀取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM