gpt4 book ai didi

java - Android - 保存图像监听器

转载 作者:行者123 更新时间:2023-12-02 09:16:12 25 4
gpt4 key购买 nike

我正在尝试将图片保存在设备上。保存图像时我将更改 Activity 。我如何知道图片何时保存?

保存图像代码:

 public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
new Thread(new Runnable() {

@Override
public void run() {

File file = null;
try {
file = createImageFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);
ostream.flush();
ostream.close();
} catch (IOException e) {
Log.e("IOException", e.getLocalizedMessage());
}
}
}).start();

最佳答案

将图像保存在图库中最终会将图像保存在您的设备上。尝试下面的代码:

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle, yourDescription);


public class CapturePhotoUtils {

/**
* A copy of the Android internals insertImage method, this method populates the
* meta data with DATE_ADDED and DATE_TAKEN. This fixes a common problem where media
* that is inserted manually gets saved at the end of the gallery (because date is not populated).
* @see android.provider.MediaStore.Images.Media#insertImage(ContentResolver, Bitmap, String, String)
*/
public static final String insertImage(ContentResolver cr,
Bitmap source,
String title,
String description) {

ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DISPLAY_NAME, title);
values.put(Images.Media.DESCRIPTION, description);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
// Add the date meta data to ensure the image is added at the front of the gallery
values.put(Images.Media.DATE_ADDED, System.currentTimeMillis());
values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());

Uri url = null;
String stringUrl = null; /* value to be returned */

try {
url = cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

if (source != null) {
OutputStream imageOut = cr.openOutputStream(url);
try {
source.compress(Bitmap.CompressFormat.JPEG, 50, imageOut);
} finally {
imageOut.close();
}

long id = ContentUris.parseId(url);
// Wait until MINI_KIND thumbnail is generated.
Bitmap miniThumb = Images.Thumbnails.getThumbnail(cr, id, Images.Thumbnails.MINI_KIND, null);
// This is for backward compatibility.
storeThumbnail(cr, miniThumb, id, 50F, 50F,Images.Thumbnails.MICRO_KIND);
} else {
cr.delete(url, null, null);
url = null;
}
} catch (Exception e) {
if (url != null) {
cr.delete(url, null, null);
url = null;
}
}

if (url != null) {
stringUrl = url.toString();
}

return stringUrl;
}

/**
* A copy of the Android internals StoreThumbnail method, it used with the insertImage to
* populate the android.provider.MediaStore.Images.Media#insertImage with all the correct
* meta data. The StoreThumbnail method is private so it must be duplicated here.
* @see android.provider.MediaStore.Images.Media (StoreThumbnail private method)
*/
private static final Bitmap storeThumbnail(
ContentResolver cr,
Bitmap source,
long id,
float width,
float height,
int kind) {

// create the matrix to scale it
Matrix matrix = new Matrix();

float scaleX = width / source.getWidth();
float scaleY = height / source.getHeight();

matrix.setScale(scaleX, scaleY);

Bitmap thumb = Bitmap.createBitmap(source, 0, 0,
source.getWidth(),
source.getHeight(), matrix,
true
);

ContentValues values = new ContentValues(4);
values.put(Images.Thumbnails.KIND,kind);
values.put(Images.Thumbnails.IMAGE_ID,(int)id);
values.put(Images.Thumbnails.HEIGHT,thumb.getHeight());
values.put(Images.Thumbnails.WIDTH,thumb.getWidth());

Uri url = cr.insert(Images.Thumbnails.EXTERNAL_CONTENT_URI, values);

try {
OutputStream thumbOut = cr.openOutputStream(url);
thumb.compress(Bitmap.CompressFormat.JPEG, 100, thumbOut);
thumbOut.close();
return thumb;
} catch (FileNotFoundException ex) {
return null;
} catch (IOException ex) {
return null;
}
}
}

要知道图像是否已保存,只需检查 storeThumbnail 方法即可。希望这能回答您的问题。

关于java - Android - 保存图像监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58965095/

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