0

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

我使用GPUImageView库对图像应用不同的效果,还实现了搜索栏来增加和减少效果。一切正常。

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

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

这是我将GPUImageViewas 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);

请帮我解决问题。

4

2 回答 2

2

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

    final GPUImage mGpuImage = new GPUImage(getApplicationContext());
    mGpuImage.setFilter(new GPUImageSharpenFilter());//Your filter here
    Bitmap effectsBItamap=mGpuImage.getBitmapWithFilterApplied(your bitmap);
于 2014-03-26T10:19:23.370 回答
1

我已经通过saveToPictures()使用GPUImageView.java. 我只是将 转换File newImg为 并将其Uri传递给OnPictureSavedListeneronPictureSaved方法的侦听器,如下所示:

        mGPUImageView.setDrawingCacheEnabled(true);
        File fil = new File(path);
        fil.mkdir();
        Random rand = new Random();
        int aa = rand.nextInt();

        mGPUImageView.setDrawingCacheEnabled(false);
         mGPUImageView.saveToPictures("MyPics", "Photo"+aa+".jpg", picSaveListener);
        picSaveListener.onPictureSaved(Uri.fromFile(newImg)); 

   OnPictureSavedListener picSaveListener = new OnPictureSavedListener() {

    @Override
    public void onPictureSaved(Uri uri) {

    }
};
于 2014-03-26T10:40:35.847 回答