使用Intent从手机的相机应用程序中检索图像相对简单,其中该图像采用位图的形式。
我不知道这对于SO来说是否是一个合适的问题,但通常的做法是按原样保存整个位图吗?或者大多数人压缩/调整大小?
答案 0 :(得分:1)
您倾向于使用Bitmap.compress保存它,它会为您压缩它。您可以随意使用无损格式的PNG,因此重新填充时不会出现质量损失。
当然,如果您正在使用意图从相机获取它,它通常已保存到文件系统。在这种情况下,该文件肯定已被压缩。
答案 1 :(得分:0)
这是一个简单的方法如下:
private Boolean saveImage(Bitmap bitmap){
ByteArrayOutputStream bao = null;
File file = null, image = null;
Boolean save = false;
try{
bao = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);
image = new File(Environment.getExternalStorageDirectory() + "", "/yourSelectedFolder/");
if (!image.exists()) {
if (!image.mkdirs()) {
Toast.makeText(context, "Error: Folder Not Created!\nPlease Try Again.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Folder Successfully Created!", Toast.LENGTH_LONG).show();
}
}
file = new File(Environment.getExternalStorageDirectory().toString() + "/yourSelectedFolder/","filename" + ".jpeg");
save = file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(bao.toByteArray());
fos.close();
if (save){
Toast.makeText(context, "Image Successfully Saved", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Image Not Saved", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(context, "Error: "+e, Toast.LENGTH_LONG).show();
}
return save;
}