我对位图有一个小问题,我希望将其加载到每个条目中带有图片的视图中。该应用程序如下所示: Application layout
我实际上有两个问题 - 第一个是当我在代码中压缩文件90%时,结果文件给了我更高的文件大小,f.e。压缩前的文件是500kb,之后是6MB。
第二个问题是图像被保存到应用程序的内部存储器(/com.example.my.application/files/),但未显示在列表本身中。当我使用文件的URI直接从图库中使用图片时,你在图片上看到的是工作,尽管由于它们的大小,RAM使用率太高,在添加5-6个应用程序崩溃之后。
以下是获取所选图片,压缩和保存的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
File mypath=new File(new File(this.getApplicationContext().getFilesDir(),"")+"/"+data.getData().getLastPathSegment()+".jpg");
try {
FileOutputStream fos = new FileOutputStream(mypath);
Uri imageUri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
imageURI = data.getData().getLastPathSegment();
TextView tv = (TextView) findViewById(R.id.note_image_uri) ;
tv.setText(imageURI);
}
}
这是gridview的适配器:
@Override
public void onBindViewHolder(SolventViewHolders holder, int position) {
...
Uri uri = Uri.parse(context.getFilesDir()+"/files/"+itemList.get(position).getUrl());
//Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(image));
holder.countryPhoto.setImageURI(uri);
}
所以基本上我的想法是,在选择了来自图库的图像之后,我想压缩它,将其保存到.getLastPathSegment()指定的名称下的/data/com.example....../中,并且然后使用相同的路径加载图片,最后一个路径段对于视图中的每个对象都是唯一的。我想我错过了一些小东西,但我不是很擅长,所以我需要你的帮助。感谢您提前提供任何帮助!