私はGlSurfaceView上にあるビットマップ上に複数の効果を与えるために、このコードを使用しています。 apply-effects-on-image-using-effects(ビットマップのみではなく、全体の質感)
は今、私は、ビットマップを保存したいです。彼らはビットマップを保存するコードを与えていますが、それを使ってGlSurfaceView全体をビットマップイメージとして保存します。代わりに、ビットマップ領域だけを保存してImageとして保存します。
そこからピクセルをとりビットマップにして画像を作る方法があります。 例えば:
public Bitmap takeScreenshot(GL10 mGL) {
final int mWidth = mEffectView.getWidth();
final int mHeight = mEffectView.getHeight();
IntBuffer ib = IntBuffer.allocate(mWidth * mHeight);
IntBuffer ibt = IntBuffer.allocate(mWidth * mHeight);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
// Convert upside down mirror-reversed image to right-side up normal
// image.
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
ibt.put((mHeight - i - 1) * mWidth + j, ib.get(i * mWidth + j));
}
}
Bitmap mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(ibt);
return mBitmap;
}
私は推測する、私は、のようにそれを更新する代わりに、それは0で始まることを、0、座標左ビットマップトップでスタートしなければならないことが必要です。そして、それはビットマップの高さと幅まで動作するはずです。
だから、それを私が解決し、私の問題にできるが、それはGLSurfaceViewでビットマップ画像の座標を取得する方法がわからないことができます。
詳細を確認するには、下の画像を確認してください。
オリジナル画像:
ロードされた演出画面での画像:
画像効果を適用した後、それを保存:
これは私が欲しいものです。
GLSurfaceViewのサーフェスには、あなたが描画したものが含まれています。画像を描いたときに座標を指定したので、画像を読みたいときの座標がわからない理由を理解できません。 – fadden
@fadden OpenGL-esではあまりよくありません。私のコードは私の質問で与えたリンクとほとんど同じです。今度はイメージの座標を取得し、イメージの部分のみをエフェクトを使って返すことができますか? –
後で画像をトリミングしてみませんか? – jyoon