图像转换为字节数组,base64不保留高度

时间:2014-06-20 09:52:49

标签: c# android

我开发了一款Android应用,可以捕获照片并将其发送到使用C#编写的网络服务。

在Android应用程序中,我将该图像转换为字节数组,然后再将其转换为base64字符串并将其传递给Web服务。

问题是图片上传成功但图片尺寸太小。例如。当我打开照片时,分辨率为1100x1200,但当它在服务器上传时,尺寸为150x200。

有谁知道可能导致此问题的原因?

当我在另一台设备上打开照片时,尺寸和分辨率也不同。

1 个答案:

答案 0 :(得分:1)

尝试使用以下代码进行图像转换并发送到服务器。

bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath()+"/MyImages/Image.jpg");

                baos = new ByteArrayOutputStream(); 
                bm.compress(Bitmap.CompressFormat.JPEG, 40 ,baos);
                byte[] byteArray = baos.toByteArray();

                try {
                    System.gc();
                    result = Base64.encodeToString(byteArray, Base64.DEFAULT);
                } catch (Exception e) {
                    e.printStackTrace();
                } catch (OutOfMemoryError e) {
                    baos = new ByteArrayOutputStream();
                    bm.compress(Bitmap.CompressFormat.JPEG, 50, baos);
                    byteArray = baos.toByteArray();
                    result = Base64.encodeToString(byteArray, Base64.DEFAULT);
                    Log.w("LOG", "Out of memory error");
                }

                Log.v("Image Conversion", result);