在相机点击我的应用程序后存储图像存储模糊图像

时间:2016-11-17 12:18:15

标签: android android-bitmap android-camera-intent

我要求用户点击我的应用中的图片然后该图片存储在本地存储中并从那里存储到服务器,但问题是存储的图像模糊不清。

public void saveImage(Bitmap bitmap, int i)
{
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100, bytes);
    File directory  = new File(Environment.getExternalStorageDirectory()+"my_directory");
    if(!directory.exists())
    {
        directory.mkdirs();
    }
    File f = new File(Environment.getExternalStorageDirectory()+"my_directory");
    try{
        f.createNewFile();
        //write the bytes in file
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        fo.close();
    }catch(IOException ioe){
        ioe.printStackTrace();
    }
} 

这是我用来保存图片的代码,这是生成位图的OnActivityResult。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 0)
    {
        if(data!=null)
        {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            iv_upload.setImageBitmap(thumbnail);

            saveImage(thumbnail,(int)System.currentTimeMillis());
        }
    }

}

2 个答案:

答案 0 :(得分:0)

是否有任何理由按照您的代码压缩图像?

Android Camera应用程序将返回的Intent中的照片编码为onActivityResult(),作为附加内容中的一个小位图,位于关键字“data”下。以下代码检索此图像并将其显示在ImageView中。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

您是否在Manifest文件中进行了这些更改,请检查

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>

答案 1 :(得分:0)

您在这里压缩原始图像:

bitmap.compress(Bitmap.CompressFormat.JPEG,100, bytes);

质量接受0 - 100

0 = MAX压缩(最低质量,适用于小图像)

100 =最小压缩(MAX质量适用于大图像)

因此,请尝试更改值100并检查质量。