检索从手机存储到应用程序活动的相同大小的图像时出现问题

时间:2016-03-31 04:09:33

标签: android image bitmap android-bitmap

我已将一个图像从activity1保存到png格式的内部存储,尺寸为960 * 960,大小为5.8kb。从库再次检索相同的960 * 960 5.8kb图像到同一个应用程序的activity2。现在,当我将此活动2中的相同图像保存到我的图库时,图像详细信息为960 * 960和4.8kb。这阻止我从activity2图像中检索像素信息,这是我的应用程序的核心要求。我想知道如何保存和检索相同大小的图像。

提前谢谢..

这是从活动1中保存图像的代码。

    public void saveImage(Bitmap bitmap){
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/My folder to save");
    String receiverN = receiverName.getText().toString();

    myDir.mkdirs();
    //name convention--------------------------------------------->>
    Calendar c = Calendar.getInstance();
    String month, day, year, hour, minute, second;
    month = ""+ (c.get(Calendar.MONTH)+1);
    day = "" + c.get(Calendar.DAY_OF_MONTH);
    year = "" + c.get(Calendar.YEAR);
    hour = ""+c.get(Calendar.HOUR_OF_DAY);
    if(hour.equals("0")) hour = "0"+hour;
    minute = "" + c.get(Calendar.MINUTE);
    int seconds = c.get(Calendar.SECOND);
    if (seconds<10) second = "0"+ seconds;
    else second = ""+seconds;

    String fname = receiverN + "-" + hour + ":" + minute + ":" + second + "_"  + month + "-" + day + "-" + year +".png";
    //name convention ends----------------------------------------->>

    File file = new File (myDir, fname);


    if (file.exists ()) file.delete ();
    try {
        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.flush();
        out.close();
        String[] paths = {file.toString()};
        String[] mimeTypes = {"/image/png"};
        MediaScannerConnection.scanFile(this, paths, mimeTypes, null);
        Toast.makeText(this, "Image Saved", Toast.LENGTH_LONG).show();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

现在我关闭应用程序并转到图库,它将存储在“我保存的文件夹”文件夹中,尺寸为960 * 960像素,尺寸为5.8kb。我将此图像分享到我的应用程序,此图像将登陆到相同应用程序的activity2。在这里,我希望在activity1中调用saveImage方法之前获取我处理的像素。 有些像素给了我相同的数据,有些则没有。

这是activity2中的代码,用于将图像从gellery获取到activity2。

onCreate{
Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();
    if (Intent.ACTION_SEND.equals(action) && type.startsWith("image/")){
        try {
            handleSendImage(intent);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public void handleSendImage(Intent intent) throws IOException {
    Uri imageUri =  intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if (imageUri != null) {
        myImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
        imageView.setImageBitmap(myImageBitmap);
    }
}

我已经保存了来自此活动2的图像,同时使用saveImage方法观察更改,保存后显示960 * 960尺寸和4.8kb而不是最初从activity1保存的5.8kb。

因此我认为我无法获得我想要的那些像素,所以请帮我保存并检索图像无损。

希望这些信息有用,请提前感谢。

0 个答案:

没有答案