如何将位图图像转换为 Uri
How To Convert A Bitmap Image To Uri
我在任何地方都找不到这个问题的答案。
Bitmap Image是在应用程序中处理的,也就是说没有获取Image的File路径。
下面是如何将 Uri 转换为 Bitmap
if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
imageview.setImageURI(selectedImageUri);
try {
bitmap1 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "" + e, Toast.LENGTH_SHORT).show();
}
bitmap1.compress(Bitmap.CompressFormat.JPEG, 7, bytearrayoutputstream);
BYTE = bytearrayoutputstream.toByteArray();
bitmap2 = BitmapFactory.decodeByteArray(BYTE, 0, BYTE.length);
imagetoo.setImageBitmap(bitmap2);
}
我现在如何重新转换为 Uri
URI 是 URL 的超集,这意味着它是文件的路径。而位图是由 dots.Bitmap 矩阵组成的数字图像,表示数据,uri 表示保存数据的位置。因此,如果您需要获取位图的 URI,只需将其保存在存储中即可。在 android 中,你可以通过 Java IO 来实现,比如 below:First 创建一个你想要保存的文件:
public File createImageFile() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File mFileTemp = null;
String root=activity.getDir("my_sub_dir",Context.MODE_PRIVATE).getAbsolutePath();
File myDir = new File(root + "/Img");
if(!myDir.exists()){
myDir.mkdirs();
}
try {
mFileTemp=File.createTempFile(imageFileName,".jpg",myDir.getAbsoluteFile());
} catch (IOException e1) {
e1.printStackTrace();
}
return mFileTemp;
}
然后刷新它,你会得到 URi
File file = createImageFile(context);
if (file != null) {
FileOutputStream fout;
try {
fout = new FileOutputStream(file);
currentImage.compress(Bitmap.CompressFormat.PNG, 70, fout);
fout.flush();
} catch (Exception e) {
e.printStackTrace();
}
Uri uri=Uri.fromFile(file);
}
这只是一个示例,并非所有 android 版本的空闲代码。要在上方和 androidN 上使用 Uri
,您应该使用 FileProvider
来提供文件。按照 Commonsware 的回答。
使用compress()
on Bitmap
to write the bitmap to a file. Then, most likely, use FileProvider
to serve that file, where getUriForFile()
gives you the Uri
corresponding to the file.
IOW,您不会 "convert" 位图到 Uri
。您将位图保存在某个地方,可以得到 Uri
.
我在任何地方都找不到这个问题的答案。
Bitmap Image是在应用程序中处理的,也就是说没有获取Image的File路径。
下面是如何将 Uri 转换为 Bitmap
if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
imageview.setImageURI(selectedImageUri);
try {
bitmap1 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "" + e, Toast.LENGTH_SHORT).show();
}
bitmap1.compress(Bitmap.CompressFormat.JPEG, 7, bytearrayoutputstream);
BYTE = bytearrayoutputstream.toByteArray();
bitmap2 = BitmapFactory.decodeByteArray(BYTE, 0, BYTE.length);
imagetoo.setImageBitmap(bitmap2);
}
我现在如何重新转换为 Uri
URI 是 URL 的超集,这意味着它是文件的路径。而位图是由 dots.Bitmap 矩阵组成的数字图像,表示数据,uri 表示保存数据的位置。因此,如果您需要获取位图的 URI,只需将其保存在存储中即可。在 android 中,你可以通过 Java IO 来实现,比如 below:First 创建一个你想要保存的文件:
public File createImageFile() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File mFileTemp = null;
String root=activity.getDir("my_sub_dir",Context.MODE_PRIVATE).getAbsolutePath();
File myDir = new File(root + "/Img");
if(!myDir.exists()){
myDir.mkdirs();
}
try {
mFileTemp=File.createTempFile(imageFileName,".jpg",myDir.getAbsoluteFile());
} catch (IOException e1) {
e1.printStackTrace();
}
return mFileTemp;
}
然后刷新它,你会得到 URi
File file = createImageFile(context);
if (file != null) {
FileOutputStream fout;
try {
fout = new FileOutputStream(file);
currentImage.compress(Bitmap.CompressFormat.PNG, 70, fout);
fout.flush();
} catch (Exception e) {
e.printStackTrace();
}
Uri uri=Uri.fromFile(file);
}
这只是一个示例,并非所有 android 版本的空闲代码。要在上方和 androidN 上使用 Uri
,您应该使用 FileProvider
来提供文件。按照 Commonsware 的回答。
使用compress()
on Bitmap
to write the bitmap to a file. Then, most likely, use FileProvider
to serve that file, where getUriForFile()
gives you the Uri
corresponding to the file.
IOW,您不会 "convert" 位图到 Uri
。您将位图保存在某个地方,可以得到 Uri
.