请注意我是NEWBIE。在学习过程中
现在这个代码在做什么?它正在从drawable读取图像,然后使用谷歌视觉从中获取文本。
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");
}
注意:R.drawable.changing是“更改”是我的图像名称。现在我想用ImageView上传的图像替换图像。
任何帮助都可行。
您只需使用ImageView.getDrawable()
从ImageView获取图像。但是,drawable不一定是BitmapDrawable(我认为你的changing
drawable是)。
要获得ImageView的drawable的实际位图,您可能需要进一步了解如何从Android drawable创建位图。 StackOverflow中有很多答案,所以我在此不再赘述。
基本上,它创建了一个Bitmap和Canvas,然后让Drawable通过Canvas将自己绘制到Bitmap中。
你可以像这样从imageview获取Bitmap
Drawable dr = ((ImageView) imView).getDrawable();
Bitmap bmp = ((GlideBitmapDrawable)dr.getCurrent()).getBitmap();
如果你想从drawable获取图像,你可以试试这个:
imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
如果您从资源库中获取图像:
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;