1

base64 文字列としてコード化された画像があり、それを別のアクティビティに渡したいです。インテントの余分なサイズ制限のため、このコードを使用して一時ファイルに保存しました

FileOutputStream fos;
        try {
            fos = openFileOutput(imagefilename, Context.MODE_PRIVATE);
            try {
                fos.write(encodedPhoto.getBytes());
                fos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

そして、別のアクティビティで画像ファイル名を渡しました。

新しいアクティビティでは、このコードを使用して読み取りました

try {
                FileInputStream fis = openFileInput(imagefilename);
                String strLine = null;
                StringBuffer buffer = new StringBuffer();
                DataInputStream dataIO = new DataInputStream(fis);

                if ((strLine = dataIO.readLine()) != null) {
                    buffer.append(strLine);
                }

                dataIO.close();
                fis.close();
                encodedPhoto = strLine;
            } catch (NullPointerException e) {

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

ただし、この方法では元のエンコードされた Base64 写真を正しく読み取ることができません...

エラーは発生しませんが、エンコードされた画像の文字列(encodedPhoto)が読み取られ、破損しているようです

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

読み取り方法が間違っています。

このコードを使用してみてください:

try {
                FileInputStream fis = openFileInput(imagefilename);
                String line = null;
                StringBuilder buffer = new StringBuilder();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(fis));

                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }

                fis.close();
                encodedPhoto = buffer.toString();
            } catch (NullPointerException e) {

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

このようにして、ファイルの String コンテンツを変更せずに読み取ることができます。

于 2012-07-30T02:09:51.567 に答える