1. 程式人生 > 其它 >聊天平臺原始碼,通過MediaStore獲取縮圖模糊

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

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

獲取縮圖的方法

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

該方法為系統方法getThumbnail

/**
*Returnthumbnailrepresentingaspecificimageitem.Ifa
*thumbnaildoesn'texist,thismethodwillblockuntilit's
*generated.Callersareresponsiblefortheirownin-memory
*cachingofreturnedvalues.
*
*Asof{@linkandroid.os.Build.VERSION_CODES#Q},thisoutput
*ofthethumbnailhascorrectrotation,don'tneedtorotate
*itagain.
*
*@paramimageIdtheimageitemtoobtainathumbnailfor.
*@paramkindoptimalthumbnailsizedesired.
*@returndecodedthumbnail,or{@codenull}ifproblemwas
*encountered.
*@deprecatedCallersshouldmigratetousing
*{@linkContentResolver#loadThumbnail},sinceit
*offersrichercontroloverrequestedthumbnailsizes
*andcancellationbehavior.
*/
@Deprecated
publicstaticBitmapgetThumbnail(ContentResolvercr,longimageId,intkind,
BitmapFactory.Optionsoptions){
finalUriuri=ContentUris.withAppendedId(
Images.Media.EXTERNAL_CONTENT_URI,imageId);
returnInternalThumbnails.getThumbnail(cr,uri,kind,options);
}

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

packages/providers/MediaProvider/apex/framework/java/android/provider/MediaStore.java
publicstaticclassThumbnailConstants{
publicstaticfinalintMINI_KIND=1;
publicstaticfinalintFULL_SCREEN_KIND=2;
publicstaticfinalintMICRO_KIND=3;
publicstaticfinalSizeMINI_SIZE=newSize(512,384);
publicstaticfinalSizeFULL_SCREEN_SIZE=newSize(1024,786);
publicstaticfinalSizeMICRO_SIZE=newSize(96,96);
publicstatic@NonNullSizegetKindSize(intkind){
if(kind==ThumbnailConstants.MICRO_KIND){
returnThumbnailConstants.MICRO_SIZE;
}elseif(kind==ThumbnailConstants.FULL_SCREEN_KIND){
returnThumbnailConstants.FULL_SCREEN_SIZE;
}elseif(kind==ThumbnailConstants.MINI_KIND){
returnThumbnailConstants.MINI_SIZE;
}else{
thrownewIllegalArgumentException("Unsupportedkind:"+
}
}
}

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

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