上传从图库应用程序中获取的图像(质量问题)

时间:2014-12-04 10:49:52

标签: android http-post uri

使用Android的图库应用选择要在以后使用httppost上传的照片。照片上传但质量和尺寸非常低。我一直在阅读有关设置Bitmap.CompressFormat.PNG会让它无损的问题,但它会将照片从2000x1500转移到250x187

我是否有可能获得缩略图而不是实际图像?我正在使用Google提供的照片。

代码

@Override
public void onActivityResult( int requestCode, int resultCode, Intent data ) {
    super.onActivityResult( requestCode, resultCode, data );

    if ( resultCode == getActivity().RESULT_OK ) {
        selectedImage = Uri.parse( data.getDataString() );

        try {   
            final Bitmap v = DecodeUriImage.Decode( selectedImage, getActivity() );
            ByteArrayOutputStream bao = new ByteArrayOutputStream();
            v.compress( Bitmap.CompressFormat.PNG, 100, bao );
            byte[] byte_arr = bao.toByteArray();

            // Add image to array
            images.set( selectedImageIndex, Base64.encodeToString( byte_arr, Base64.DEFAULT ) );

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

结果

Image

2 个答案:

答案 0 :(得分:1)

Bitmap.CompressFormat.PNG将压缩图像,但这取决于您在非压缩图像上使用的格式扭结。您应该使用矢量图像来获得最佳效果,因为在“压缩传输”中,immage在使图像变大时不会失去质量。

答案 1 :(得分:0)

没有理由将所选图像放在位图中供以后使用。此外,您没有在DecodeUriImage.Decode( selectedImage, getActivity() );中显示所有情况。也许它的质量在那里改变了。而是意识到你在selectedImage中有一个媒体路径,你可以将其转换为文件系统的真实路径。保存该路径以供以后使用。

如果您以后使用它,只需在字节数组中加载文件并编码base64。不要使用Bitmapfactory。