0

ギャラリーから選択するか、カメラでキャプチャする画像にいくつかの効果を適用するために使用される 1 つのプロジェクトを開発しています。

画像にさまざまな効果を適用するためにGPUImageViewライブラリを使用し、効果を増減するためのシークバーも実装しました。すべてが正常に機能しています。

問題は、そのエフェクトを適用した画像をSDカードに保存したいということです。私はそのコードを書き、正常に動作しましたが、保存された画像は黒のままです。SDカードから画像を確認するたびに、黒い画面以外に変更された画像が表示されません。

黒い画像が表示される理由はわかりません。

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

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 に答える