2014-09-20 403 views
0

我目前正在将图像作为Base64传递给休息服务。但我无法读取文件。这里是我的代码:在GDK中将图像转换为base64

if (requestCode == iPictureCode && resultCode == RESULT_OK) { String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH); String image = processPictureWhenReady(picturePath); }


`私人字符串processPictureWhenReady(最后弦乐picturePath){ 最终文件PictureFile的=新的文件(picturePath);

if (pictureFile.exists()) { 
     // The picture is ready; process it. 
     Bitmap bitmap = BitmapFactory.decodeFile(pictureFile.getAbsolutePath()); 
     bitmap = CameraUtils.resizeImageToHalf(bitmap); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 85, stream); 
     String base64Image = Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT); 
     return base64Image; 
    } 

}`

它永远不会进入,如果块 'pictureFile.exists()'

可能是什么问题呢?

回答

2

看起来你从example in the developer docs适应你的代码,但你删除的else where子句中一个FileObserver用于检测当图像实际可用。您还需要该部分,因为当活动返回时,全尺寸图像可能不会立即准备好。

+0

感谢@Tony对你的回应...我在我的问题中删除了那段代码......但是现在当我用'EXTRA_THUMBNAIL_FILE_PATH'替换'EXTRA_PICTURE_FILE_PATH'时,它对我有用 – 2014-09-22 03:58:59

+1

当缩略图图像立即准备就绪时活动结果被返回,所以如果你只需要一个低分辨率的图像,你可以使用它。但是,如果需要,您仍然需要使用FileObserver来检测全尺寸图像。缩略图立即可用的原因是,您可以在用户界面中显示某些内容,以确认照片是在准备完整图像时拍摄的。 – 2014-09-22 15:27:54

+0

感谢@TonyAllevato的帮助:) – 2014-09-23 09:39:10

相关问题