【发布时间】:2014-07-24 10:04:17
【问题描述】:
我开发了一个 Android 应用程序,并开发了一项功能,可以从图库中拍照并将其发送到我的服务器并将其分配给用户作为他的个人资料图片。
我选择了一张图片(重要:由 ma 相机拍摄)并将其转换为 base64,然后再将其发送到我的服务器。当我得到图像并尝试显示它时,我只有部分图片,但不是 png 中的图像...我尝试更改 JPEG 中的 compressformat,这是最糟糕的...我从 2 天开始就不明白这个问题我疯了...请帮助:)
private Bitmap bitmap;
public void chooseProfilePicture(View view) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, REQUEST_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
InputStream stream = null;
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
try {
if (bitmap != null)
bitmap.recycle(); // recyle unused bitmaps
stream = getContentResolver().openInputStream(data.getData());
bitmap = BitmapFactory.decodeStream(stream);
imageView.setImageBitmap(bitmap);
// HERE THE IMAGE IS DISPLAYED 100% WELL
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (stream != null)
try {
stream.close();
} catch (Exception ex) {
Log.e("EditProfilActivity", ex.getMessage());
}
}
}
public void save(View view) {
if (bitmap != null) {
try {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
bitmap.recycle();
byte[] imageBytes = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
picture = encodedImage;
// HERE WHEN I TRY TO DISPLAY THE IMAGE I HAVE ONLY A PART OF THE IMAGE
} catch (Exception e) {
Log.e("", e.getMessage());
}
}
【问题讨论】: