在String中加载图像并在更改图像后保存

时间:2016-05-26 17:59:42

标签: java image image-processing stream

我尝试在字符串中加载图片,在使用此字符串执行操作后,保存图像。

当我尝试将FileInputStream的值指向String targetFileStr时,会出现问题。如果我不这样做,我保存图像,一切都没问题,但是当我将它保存在字符串上时,图像会发生变化,无论我是尝试从字符串中保存图像还是从FileInputStream。

    FileInputStream fis = null;

    File file = new File("image.png");
    fis = new FileInputStream(file);
    String targetFileStr = IOUtils.toString(fis, "UTF-8");

    *InputStream inputStream =  IOUtils.toInputStream(targetFileStr, "UTF-8");
    *InputStream inputStream = fis;
    // no matter which one i use, both ways fail

    OutputStream outputStream = null;

    try {

        outputStream = new FileOutputStream(new File("image2.png"));

        int read = 0;
        byte[] bytes = new byte[1024];

        while ((read = inputStream.read(bytes)) != -1) {
            outputStream.write(bytes, 0, read);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:2)

您可能需要考虑通过Base64编码/解码将图像转换为String。 This is an example编码。

编码后,您可以修改字符串(实际上您创建新字符串,不能修改现有字符串),但一定要生成valide base64编码输出,否则您将无法解码。 / p>