我正在使用this库,但他们没有像github上的其他库那样解释所有细节。
ImagePicker.create(this)
.folderMode(true) // folder mode (false by default)
.folderTitle("Folder") // folder selection title
.imageTitle("Tap to select") // image selection title
.single() // single mode
// multi mode (default mode)
.limit(10) // max images can be selected (99 by default)
.showCamera(true) // show camera or not (true by default)
.imageDirectory("Camera") // directory name for captured image ("Camera" folder by default)
// original selected images, used in multi mode
.start(12); // start image picker activity with request code
它正在工作我可以看到画廊。
onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
ImageView imageview = (ImageView)findViewById(R.id.iv1);
if (requestCode == 12 && resultCode == RESULT_OK && data != null) {
ArrayList<Image> images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES);
// do your logic ....
imageview.setImageBitmap(images);//It is not working, I know it is not bitmap but how to set?
}
}
最后如何设置imageview?
答案 0 :(得分:0)
您无法将图像视图设置为图像的arraylist,您只能将图像视图设置为将一个图像作为源。
此外,看起来你正在主线程上处理你的图像,这也不是一个好主意。
您的图像位于数组中,但您必须在多个图像视图或显示多个图像的自定义视图中使用它们
答案 1 :(得分:0)
private Bitmap getScreenshot(Image image) {
Image.Plane[] planes = image.getPlanes();
ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * mWidth;
// ??????Bitmap???
Bitmap bitmap = Bitmap.createBitmap(mWidth + rowPadding / pixelStride, mHeight, Bitmap.Config.RGB_565);
bitmap.copyPixelsFromBuffer(buffer);
image.close();
return bitmap;
}
图像是资源而不是图像,但您可以使用上面的API通过使用ByteBuffer来获取位图。在getScreenshot(图像图像)中传递images.get(position)。它会返回位图,然后只需设置imageView.setImageBitmap(位图) Example link