我正在开发一个项目,用于对图像应用一些效果,这些效果将从图库中选择或通过相机捕获。
我使用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);
请帮我解决这个问题。
答案 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