对于getThumbnail,android文档有:
public static Bitmap getThumbnail(ContentResolver cr,long origId,long groupId,int kind,BitmapFactory.Options options)
在使用Camera.TakePicture拍照时,我完全不知道如何获得origId(原始图像的ID以执行getThumbnail)。
根据我读过的其他各种问题,我目前的尝试是:
String[] projection = { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA };
String sort = MediaStore.Images.ImageColumns._ID + " DESC";
Log.d("getting IDs:",sort);
Cursor myCursor = managedQuery(imagesUri, projection, null, null, sort);
myCursor.moveToFirst();
thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), myCursor.getLong(myCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID)), MediaStore.Images.Thumbnails.MINI_KIND, null );
但是,我的日志输出的字符串为“_ID”,应该是实际ID,然后在我尝试创建myCursor的行上给出一个空指针异常。
我还读到了其他人的类似问题的答案,即SD卡上的图片没有有 ID,在这种情况下,我猜origID实际上是一个URI而且文档只是搞砸了吗?我非常困惑,任何解释都会非常受欢迎。
答案 0 :(得分:2)
我最终无法使用getThumbnail,因为我找不到任何工作方式来使用路径到图像的位置,并且(至少在当时,我相信已经提交了报告)它设备没有将缩略图存储在预期位置的问题。
我的解决方案最终成为我希望可以避免的,编写我自己的小缩略图生成器,而不是使用Android的getThumbnail。
public class CreateThumbnail extends Activity {
Bitmap imageBitmap;
public Bitmap notTheBestThumbnail(String file) {
byte[] imageData = null;
try
{
final int THUMBNAIL_SIZE = 95;
FileInputStream fis = new FileInputStream(file); //file is the path to the image-to-be-thumbnailed.
imageBitmap = BitmapFactory.decodeStream(fis);
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 10, baos); //What image format and level of compression to use.
imageData = baos.toByteArray();
}
catch(Exception ex) {
Log.e("Something did not work", "True");
}
return imageBitmap;
}
}
我使用类似的类:
CreateThumbnail thumb = new CreateThumbnail();
thumb.notTheBestThumbnail(Environment.getExternalStorageDirectory() + "/exampleDir" + "/" + exampleVar + "/example_img.jpg");
Bitmap mBitmap = thumb.imageBitmap; //Assigns the thumbnail to a bitmap variable, for manipulation.
虽然我实际上并没有弄清楚如何获取ID,但希望这可以帮助任何遇到getThumbnail类似问题的人。