聊天平臺原始碼,通過MediaStore獲取縮圖模糊

zhibo系統開發發表於2021-10-29

聊天平臺原始碼,通過MediaStore獲取縮圖模糊實現的方法

獲取縮圖的方法


Bitmap thumbnail = Images.Thumbnails.getThumbnail(mContext.getContentResolver(), id, Images.Thumbnails.MICRO_KIND, null)


該方法為系統方法getThumbnail


/**
 * Return thumbnail representing a specific image item. If a
 * thumbnail doesn't exist, this method will block until it's
 * generated. Callers are responsible for their own in-memory
 * caching of returned values.
 *
 * As of {@link android.os.Build.VERSION_CODES#Q}, this output
 * of the thumbnail has correct rotation, don't need to rotate
 * it again.
 *
 * @param imageId the image item to obtain a thumbnail for.
 * @param kind optimal thumbnail size desired.
 * @return decoded thumbnail, or {@code null} if problem was
 *         encountered.
 * @deprecated Callers should migrate to using
 *             {@link ContentResolver#loadThumbnail}, since it
 *             offers richer control over requested thumbnail sizes
 *             and cancellation behavior.
 */
@Deprecated
public static Bitmap getThumbnail(ContentResolver cr, long imageId, int kind,
        BitmapFactory.Options options) {
    final Uri uri = ContentUris.withAppendedId(
            Images.Media.EXTERNAL_CONTENT_URI, imageId);
    return InternalThumbnails.getThumbnail(cr, uri, kind, options);
}


觀察到引數@param kind optimal thumbnail size desired


packages/providers/MediaProvider/apex/framework/java/android/provider/MediaStore.java
public static class ThumbnailConstants {
    public static final int MINI_KIND = 1;
    public static final int FULL_SCREEN_KIND = 2;
    public static final int MICRO_KIND = 3;
    public static final Size MINI_SIZE = new Size(512, 384);
    public static final Size FULL_SCREEN_SIZE = new Size(1024, 786);
    public static final Size MICRO_SIZE = new Size(96, 96);
    public static @NonNull Size getKindSize(int kind) {
        if (kind == ThumbnailConstants.MICRO_KIND) {
            return ThumbnailConstants.MICRO_SIZE;
        } else if (kind == ThumbnailConstants.FULL_SCREEN_KIND) {
            return ThumbnailConstants.FULL_SCREEN_SIZE;
        } else if (kind == ThumbnailConstants.MINI_KIND) {
            return ThumbnailConstants.MINI_SIZE;
        } else {
            throw new IllegalArgumentException("Unsupported kind: " + 
        }
    }
}



因此,如要修改縮圖清晰度,可以修改第三個引數為MINI_KIND或FULL_SCREEN_KIND即可。

以上就是聊天平臺原始碼,通過MediaStore獲取縮圖模糊實現的方法, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2839699/,如需轉載,請註明出處,否則將追究法律責任。

相關文章