我有一个片段,首先使用Glide将图像设置为imageView(从互联网上获取图像网址).然后在点击图像视图时,可以从图库或相机意图中选择新图像.问题是当我尝试设置从OnActivityResult()获得的位图时.图像实际上设置但滑动重叠.我需要显示从相机/画廊捕获的图像.任何帮助表示赞赏,如果可以使用毕加索或任何其他图书馆完成,请提出建议.
以下是我到目前为止所尝试的内容
以下是我到目前为止所尝试的内容
onActivityResult()
@Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); if (resultCode == Activity.RESULT_OK) { if (requestCode == SELECT_FILE) onSelectFromgalleryResult(data); else if (requestCode == REQUEST_CAMERA) // onCaptureImageResult((Bitmap) data.getExtras().get("data")); onCaptureImageResult(data); } } private void onCaptureImageResult(Intent data) { if (data != null) { mImageUri = Uri.parse("file://" + data.getStringExtra(CameraConfiguration.Arguments.FILE_PATH)); } try { bitmap_image = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(),mImageUri); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap_image.compress(Bitmap.CompressFormat.JPEG,60,bytes); bitmap_image = Bitmap.createScaledBitmap(bitmap_image,(int) (bitmap_image.getWidth() * 0.5),(int) (bitmap_image.getHeight() * 0.5),true); ExifInterface ei = new ExifInterface(data.getStringExtra(CameraConfiguration.Arguments.FILE_PATH)); int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_UNDEFINED); switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_90: bitmap_image = (SnappyUtils.rotateImage(bitmap_image,90)); break; case ExifInterface.ORIENTATION_ROTATE_180: bitmap_image = (SnappyUtils.rotateImage(bitmap_image,180)); break; case ExifInterface.ORIENTATION_ROTATE_270: bitmap_image = (SnappyUtils.rotateImage(bitmap_image,270)); break; case ExifInterface.ORIENTATION_norMAL: default: break; } } catch (IOException e) { e.printstacktrace(); Log.d("exception",e.toString()); } ////////////////////// it is showing on iv_logo2 as expected as it does not has anything set by glide////////////////////////////////////////////////////////////////// iv_logo.setBackground(null); iv_logo.setimageBitmap(bitmap_image); iv_logo2.setimageBitmap(bitmap_image); ///////////////////////////tried added this by seeing other SO posts ////////////////////////////////////////////////////////////////// Glide.with(mContext) .load(mImageUri) .signature(new StringSignature(String.valueOf(System.currentTimeMillis()))) .diskCacheStrategy(diskCacheStrategy.NONE) .skipMemoryCache(true) .into(iv_logo); }
另请注意,这与删除Glide的缓存不同
解决方法
花了很多时间搞清楚如何删除Glide设置的图像并失败后,决定去老派并首先在手机中下载图像并在我的应用程序中将该图像设置为位图
asynchtask下载图片
private class Getimages extends AsyncTask<Object,Object,Object> { private String requestUrl,imagename_; private ImageView view; private Bitmap bitmap; private FileOutputStream fos; private Getimages(String requestUrl,ImageView view,String _imagename_) { this.requestUrl = requestUrl; this.view = view; this.imagename_ = _imagename_; } @Override protected Object doInBackground(Object... objects) { try { URL url = new URL(requestUrl); URLConnection conn = url.openConnection(); bitmap = BitmapFactory.decodeStream(conn.getInputStream()); } catch (Exception ex) { ex.printstacktrace(); } return null; } @Override protected void onPostExecute(Object o) { view.setimageBitmap(bitmap); } }