Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在使用照相机拍照时找到用于获取缩略图的origID.TakePicture_Android_Camera_Thumbnails - Fatal编程技术网

Android 如何在使用照相机拍照时找到用于获取缩略图的origID.TakePicture

Android 如何在使用照相机拍照时找到用于获取缩略图的origID.TakePicture,android,camera,thumbnails,Android,Camera,Thumbnails,对于getThumbnail,android文档包括: 公共静态位图getThumbnail(ContentResolver cr、long origId、long groupId、int-kind、BitmapFactory.Options) 我完全不知道在使用Camera.TakePicture拍照时如何获取origId(要执行getThumbnail的原始图像的ID) 根据我读到的各种其他问题,我目前的尝试是: String[] projection = { MediaStore.Imag

对于getThumbnail,android文档包括:

公共静态位图getThumbnail(ContentResolver cr、long origId、long groupId、int-kind、BitmapFactory.Options)

我完全不知道在使用Camera.TakePicture拍照时如何获取origId(要执行getThumbnail的原始图像的ID)

根据我读到的各种其他问题,我目前的尝试是:

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,文档只是一团糟?我非常困惑,任何解释都是非常受欢迎的。

我最终无法使用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中遇到类似问题。

android摄像头处理教程和软件完全混乱不堪。一切都过时了,只有晦涩难懂的组合才有效。除了牺牲一只山羊,我不认为有一个合乎逻辑的方式让它开箱即用。我所做的是创建一些尺寸,这样我至少可以将缩略图缩放到不同的屏幕大小,但这并不能在开箱即用,这真是荒谬。
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;
    }   
}