DrawableまたはPNGで画像を保存して変換しますか?
JavaおよびAndroid Studioでアプリケーションを開発しています。
base64でJSONを使用して画像を取得し、pngに変換していました。
decodedString = Base64.decode(tipo.getString("imagem"), Base64.DEFAULT);
decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
salvarImagem(caminho+"/tipos/",decodedByte,tipo.getString("nome"));
public static void salvarImagem(String caminho, Bitmap bmp, String nome){
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
File folder = new File(Environment.getExternalStorageDirectory() + "/"+pastaProjeto+caminho);
if (!folder.exists()) {
folder.mkdir();
}
String nomeArquivo = Environment.getExternalStorageDirectory() + "/"+pastaProjeto+caminho+nome+".png";
FileOutputStream fos = new FileOutputStream(nomeArquivo);
fos.write(bytes);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
そうすれば、画像を読み込むたびに、Drawableを作成する必要があります(ビットマップを読み込んで変換する)。
Drawable d = new BitmapDrawable(act.getResources(),getLoacalBitmap(caminho));
public static Bitmap getLoacalBitmap(String url) {
try {
FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory()+"/"+url);
return BitmapFactory.decodeStream(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
しかし、機能していません。ビットマップはnullです。
何が最善かを知りたいです。pngの代わりにドロウアブルを保存するか、私がやっているようにしたいです。
ドロアブル形式で保存する方が良い場合、フローを生成する方法がわからないので助けが必要です...私がやっている方が良い場合、関数がnull Drawableを返す理由を理解するのに助けが必要です。