如何解决使用位图缓存毕加索图像
尽管我在 OnActivityResult 中调用此方法,但从未调用过 loadImage 方法的此内容。
public void loadImage(Uri uri){
File file = new File(getApplicationContext().getExternalCacheDir().getAbsolutePath() + "/" +uid + ".jpg");
Log.d("Check Bitmap","file" + file);
try {
Picasso picasso = Picasso.get();
Bitmap bitmap = picasso.load(uri).get();
Log.d("Check Bitmap","bitmap working");
bitmap.compress(Bitmap.CompressFormat.JPEG,100,new FileOutputStream(file));
} catch (Exception e) {
Log.d("Check Bitmap","bitmap not working,cached");
e.printstacktrace();
}
我的目的是从文件中检索图像。
这是我的 OnActivityResult
@Override
protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if(requestCode ==1000){
{
if(resultCode == Activity.RESULT_OK){
imageUri = data.getData();
Context context;
final ProgressDialog dialog = new ProgressDialog(myProfile.this);
dialog.setMessage("Uploading Image...");
dialog.show();
profilepic.setimageURI(imageUri);
ref.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final Picasso picasso = Picasso.get();
picasso.setIndicatorsEnabled(true);
picasso.load(uri).into(profilepic);
downloadUri = uri;
dialog.dismiss();
Toast.makeText(getApplicationContext(),"Image Uploaded!",Toast.LENGTH_SHORT).show();
loadImage(uri); //Here I call
解决方法
您不应在日志中使用用空格分隔的 TAG 。尝试用一个单词(例如“ Checkere”)代替"Check Bitmap"
。然后,您将能够在Logcat中看到您的日志。
您需要将所有内容放入线程中。
这是 loadImage
的完整代码块 public void loadImage(final Uri uri){
Thread thread = new Thread() {
@Override
public void run() {
Log.d("Checkere","stuck at file");
File file = new File(getCacheDir() + File.separator + uid + ".jpg");
Log.d("Checkere","file" + file);
try {
Picasso picasso = Picasso.get();
Bitmap bitmap = picasso.load(uri).get();
Log.d("Checkere","bitmap working");
FileOutputStream fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG,85,fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
Log.d("Checkere",e.getMessage());
e.printStackTrace();
}
}};
thread.start();
}
请注意,我还在您的代码中添加了这两行。
fOut.flush();
fOut.close();
我希望这会有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。