gpt4 book ai didi

java - 如何将图像数据作为 base 64 字符串写入文本文件?

转载 作者:太空狗 更新时间:2023-10-29 14:30:40 27 4
gpt4 key购买 nike

我正在尝试将图像数据作为 base 64 字符串写入文本文件,如果它不包含太多信息,它就可以工作,但是当它包含相当多的信息时,它会使应用程序崩溃,说下面的内存不足是我的代码:

package com.search.visual;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;

public class SavePhotoTask extends AsyncTask<byte[], String, String>{
String name;
byte[] num;
@Override
protected String doInBackground(byte[]... params) {
// TODO Auto-generated method stub
File photo = new File(Environment.getExternalStorageDirectory(),".vis/image.xml");

name = Base64.encodeToString(params[0], 0);



//return base64String;
if (photo.exists()){
photo.delete();
}
try{



FileWriter fi = new FileWriter(photo.getPath());
fi.write("<Image>\n\t<Data>");
fi.write(name);

fi.write("</Data>\n</Image>");
fi.close();


}catch (IOException e) {
// TODO: handle exception
Log.e("pictureDemo","exception", e);
}


return (null);
}

}

我做错了什么还是有更好的方法?

提前谢谢你

最佳答案

听起来您的 RAM 快用完了。发生这种情况的一个原因是因为您同时将整个原始图像和整个 base-64 编码图像保存在内存中,即使只是短暂的。尝试在 for 循环中一次将数据写出一个 block ,使用变体:

encodeToString(byte[] input, int offset, int len, int flags)

一次编码和写入几千字节

关于java - 如何将图像数据作为 base 64 字符串写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com