カメラから画像をキャプチャしようとしていますが、大きすぎる場合は、ビットマップを圧縮して SD カードに送り返したいと考えています。最初は画像を内部メモリに直接取り込もうとしましたが、以前の質問に対するこの回答によれば、それができるようです:カメラからのアンドロイド写真は本当に小さいサイズで撮影されています
その画像ファイルをアプリの内部メモリに戻すにはどうすればよいですか?
カメラから画像をキャプチャしようとしていますが、大きすぎる場合は、ビットマップを圧縮して SD カードに送り返したいと考えています。最初は画像を内部メモリに直接取り込もうとしましたが、以前の質問に対するこの回答によれば、それができるようです:カメラからのアンドロイド写真は本当に小さいサイズで撮影されています
その画像ファイルをアプリの内部メモリに戻すにはどうすればよいですか?
ボタンの Onclick メソッドを呼び出して、イメージを SD カードに保存します。
SaveImage(bitmap);
画像を SdCard に保存:
private void SaveImage(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/demo_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
// Below code will give you full path in TextView
> txtPath1.setText(file.getAbsolutePath());
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
SdCard から画像を取得する場合:
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageview.setImageDrawable(bitmap);
画像を内部メモリに保存する場合:
以下のコードを使用して画像を再スケーリングできます。
Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
これにより、画像がより小さなサイズに圧縮されます。必要に応じて、新しい高さと幅を指定する必要があります。
カメラから取得した画像は、すでに jpeg 形式で圧縮されています。カメラから生の画像を取得することはありません。