Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Java 从ImageView而不是Drawable获取图像_Java_Android_Android Imageview - Fatal编程技术网

Java 从ImageView而不是Drawable获取图像

Java 从ImageView而不是Drawable获取图像,java,android,android-imageview,Java,Android,Android Imageview,请注意,我是一个新手。在学习过程中 现在这个代码在做什么?它从drawable读取图像,然后使用google vision从中获取文本 Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.changing); TextRecognizer textRecognizer = new TextRecognizer.Builder(getAppl

请注意,我是一个新手。在学习过程中

现在这个代码在做什么?它从drawable读取图像,然后使用google vision从中获取文本

 Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.changing);
        TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build();

        if(!textRecognizer.isOperational()){
            Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Frame frame = new Frame.Builder().setBitmap(bitmap).build();

            SparseArray<TextBlock> item = textRecognizer.detect(frame); //Yeh Frame Detect Kr rha he

            StringBuilder sb = new StringBuilder();
            for(int i = 0 ; i<item.size();i++){
                TextBlock myitem = item.valueAt(i);
                sb.append(myitem.getValue());
                sb.append("\n");
            }
Bitmap Bitmap=BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.changing);
TextRecognizer TextRecognizer=新的TextRecognizer.Builder(getApplicationContext()).build();
如果(!textRecognitor.isOperational()){
Toast.makeText(getApplicationContext(),“”,Toast.LENGTH_SHORT.show();
}
其他的
{
Frame Frame=new Frame.Builder().setbit映射(位图).build();
SparseArray item=textRecognitor.detect(frame);//Yeh frame detect Kr rha he
StringBuilder sb=新的StringBuilder();

对于(int i=0;i您可以简单地使用
ImageView.getDrawable()
从ImageView获取图像。但是,drawable不一定是BitmapDrawable(我认为您的
更改
drawable是可以的)

要获得ImageView可绘制的实际位图,您可能需要进一步了解如何从Android可绘制的创建位图。StackOverflow中有很多答案,因此在此不再重复


基本上,它是创建一个位图和一个画布,然后让可绘制对象通过画布将自己绘制到位图中。

您可以像这样从imageview中获取
位图

Drawable dr = ((ImageView) imView).getDrawable();
Bitmap bmp =  ((GlideBitmapDrawable)dr.getCurrent()).getBitmap();

如果要从drawable获取图像,可以尝试以下操作:

imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
如果您是从gallery之类的资源获取图像:

if (requestCode == SELECT_FILE)
    {
        Uri selectedImageUri = data.getData();
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
            imageview.setImageBitmap(bitmap);
    }
获取图像的另一个选项是从相机:

if(requestCode == REQUEST_CAMERA)
        {
            Bundle bundle = data.getExtras();
            final Bitmap bmp = (Bitmap) bundle.get("data");
            imageview.setImageBitmap(bmp);
        }
其中,SELECT_FILE&REQUEST_CAMERA只是一个整数:

int SELECT_FILE = 0;
int REQUEST_CAMERA = 1;

如何在Gallery中的
ImageView
上设置图像?您可以直接在
onActivityResult()
中获得
位图
,而无需通过
ImageView
(尽管您仍然可以在
ImageView
上设置)。使用
BitmapFactory.decodeStream(getContentResolver()).openInputStream(intent.getData())
,其中
intent
是传递到
onActivityResult()
intent
。尝试了很多次,但我得到的都是。错误的第二个参数类型。发现:'android.graphics.drawable.drawable',必需的'int'您是指BitmapFactory.decodeResource()中的'int'?这是因为R.drawable.chaning是一个int(一个资源id),但ImageView.getDrawable()不返回资源id,而是返回一个实际的drawable。因此,您必须使用BitmapFactory的另一种方法,或者如我所述将drawable转换为位图。