Android:来自int.storage的压缩位图未动态加载

时间:2016-04-16 10:12:44

标签: java android bitmap

我对位图有一个小问题,我希望将其加载到每个条目中带有图片的视图中。该应用程序如下所示: 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....../中,并且然后使用相同的路径加载图片,最后一个路径段对于视图中的每个对象都是唯一的。我想我错过了一些小东西,但我不是很擅长,所以我需要你的帮助。感谢您提前提供任何帮助!

0 个答案:

没有答案
相关问题