Tôi đang cố gắng sử dụng thư viện PhotoView để tạo công cụ cắt ảnh nhưng tôi không hiểu được giá trị được trả lại bởi getDisplayRect()
. Tôi đặt ảnh trên ImageView
như vậy:Tôi gặp khó khăn khi hiểu getDisplayRect() của PhotoView thực sự trả về (xây dựng công cụ cắt ảnh android)
photo.setImageDrawable(new BitmapDrawable(getResources(), image));
nơi image
là đối tượng Bitmap. Sau đó tôi thiết lập một số giá trị chia tỷ lệ:
float minScale = ((float)image.getWidth() > (float)image.getHeight())
? (float)image.getWidth()/(float)image.getHeight()
: (float)image.getHeight()/(float)image.getWidth();
attacher.setMaxScale(minScale * 5f);
attacher.setMidScale(minScale * 2.5f);
attacher.setMinScale(minScale);
attacher.setScale(minScale, (float)image.getWidth()/2f,(float)image.getHeight()/2f, false);
attacher.update();
nơi attacher
là đối tượng PhotoViewAttacher
.
Khi người dùng được thực hiện tôi sử dụng những điều sau đây để xác định phần Bitmap đó là được nhìn thấy trong ImageView
:
RectF rect = attacher.getDisplayRect();
float scale = attacher.getScale();
PhotoData ret = new PhotoData(data);
ret.x = (int)(Math.abs(rect.left)/scale);
ret.y = (int)(Math.abs(rect.top)/scale);
ret.width = (int)(rect.width()/scale);
ret.height = (int)(rect.height()/scale);
tôi nhận được kết quả bất ngờ mặc dù. Có lẽ ai đó ở đây có thể cung cấp một số thông tin chi tiết?
là gì size.width() và size.height()? – braintrapp
@ user3809445 Tôi đoán biến kích thước đề cập đến Bitmap của tệp hình ảnh gốc được hiển thị trong PhotoView. – AmuletxHeart