保存在SD卡中的图像仅显示在Android中使用GPUImageView的黑屏

时间:2014-03-26 09:51:22

标签: android android-image android-gpuimageview

我正在开发一个项目,用于对图像应用一些效果,这些效果将从图库中选择或通过相机捕获。

我使用GPUImageView库对图像应用不同的效果,并且还实现了搜索栏以增加和减少效果。一切都很好。

问题是现在我想将效果应用图像保存到SD卡中。我已经为它编写了代码并且它的工作成功但是保存的图像仍然是黑色的。每当我检查SD卡中的图像时,它都不会显示除黑屏外的修改后的图像。

我不知道它为什么显示黑色图像。

以下是我将GPUImageView作为drawingcachedenabled设为true并将其保存为图像的代码。

mGPUImageView.setDrawingCacheEnabled(true);
Bitmap bitmap = mGPUImageView.getDrawingCache();
String path = Environment.getExternalStorageDirectory()
                    .getAbsolutePath();
File fil = new File(path + "/MyPics");
fil.mkdir();
Random rand = new Random();
int aa = rand.nextInt();
String filename = "Photo" + aa+".jpg";
File newImg = new File(fil, filename);
    try {
        FileOutputStream out = new FileOutputStream(newImg);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();
    } catch (Exception e) {

}
    Toast.makeText(this,"File Saved at Path---->" + newImg.getAbsolutePath(),
                    Toast.LENGTH_LONG).show();
            mGPUImageView.setDrawingCacheEnabled(false);

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

您可以为GPUImage创建对象并应用您的过滤器..

    final GPUImage mGpuImage = new GPUImage(getApplicationContext());
    mGpuImage.setFilter(new GPUImageSharpenFilter());//Your filter here
    Bitmap effectsBItamap=mGpuImage.getBitmapWithFilterApplied(your bitmap);

答案 1 :(得分:1)

我已使用saveToPictures()的{​​{1}}方法解决了我的问题。 我只是将GPUImageView.java转换为File newImg并将其传递给Uri类的OnPictureSavedListener方法的监听器,如下所示:

onPictureSaved