读取PNG文件并在Java中保留正确的格式

问题描述 投票:1回答:1

我正在尝试读取PNG文件,然后将数据作为对HTTP请求的响应发送出去。

[当我将原始PNG文件重命名为.txt并在编辑器中将其打开时,我看到的内容是这样的

8950 4e47 0d0a 1a0a 0000 000d 4948 4452
0000 074c 0000 0632 0806 0000 00bc 541d
2300 0000 0467 414d 4100 00b1 8e7c fb51
9300 0000 2063 4852 4d00 0087 0f00 008c
0f00 00fd 5200 0081 4000 007d 7900 00e9

但是,当我尝试手动读取它并将其存储为Java中的String时,会得到如下结果:

�PNG

���
IHDR��L��2����T#���gAMA����|�Q���� cHRM���������R���@��}y�����<����s<�w��
/iCCPICC Profile��HÇ�wTT��Ͻwz��0�z�.0��. Qf���Ml��@DE�����H��b!(�`HPb0�ï

结果,我在浏览器中收到一个错误,说图像格式错误。

看到输出包含一些易读的内容,例如“ PNG”,我相信我在阅读时会更改编码。但是,我不知道如何使它保留“正确的”格式/编码。这是我尝试过的两种不同方法,两种方法均会导致类似的损坏结果。

        InputStream inputStream = NewWebserverLauncher.class.getClassLoader().getResourceAsStream(url);
        if (inputStream == null) {
            // todo: error
            return "NO INPUT STREAM. Looked for \"" + url + "\"";
        }
        ByteArrayOutputStream result = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) != -1) {
            result.write(buffer, 0, length);
        }
        return result.toString();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuilder sb = new StringBuilder();
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        return sb.toString();

非常感谢您提供有关如何正确阅读PNG的指示!

java inputstream
1个回答
2
投票

但是,当我尝试手动读取它并将其作为字符串存储在Java中时

© www.soinside.com 2019 - 2024. All rights reserved.