私のアプリケーションでは、ユーザーが画像をキャプチャしようとする前にカメラのフレームをキャプチャするようにカメラを起動するとすぐに、画像をバッファに保存したいと思います。アンドロイドでこれを達成するための具体的な方法を教えてください。私のアプリカメラがアンドロイドで起動している間、画像をバッファに保存する方法は?
0
A
答えて
0
古いカメラAPIでは、比較的簡単なプレビューフレームデータにアクセスできます。Android 5.0から、camera2が導入されました。これは、正しいハンドラと状態を設定するのがはるかに複雑です。
Android 7.0がリリースされました。主な質問は次のとおりです。旧式の非難されたコードを使用してもいいですか?私たちのAndroid携帯電話のいくつかはまだ4.2と4.4を使用しているので、私にとっては5.0aと6.0はうまくいきますが、私はあなたの事を知らないのです。
緑色の画面を削除するようなカスタム色を削除しましたが、ユーザーがプレビュー画面にタッチすると、茶色や青色のような希望の色が選択されます。
camera.setPreviewCallback(new CameraPreviewCallback());
そして、このように初期化されたカメラ:
private class CameraPreviewCallback implements Camera.PreviewCallback {
private int curColor, curRed, curGreen, curBlue;
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// conversion:
decodeYUV420SP(mRgb, data, mSurfWidth, mSurfHeight);
// check if need an update for the selected color
if (mRequestColorUpdate) {
int arrayIndex = mTouchY * mSurfWidth + mTouchX;
mChoosedColor = mRgb[arrayIndex];
btRecordVideo.setBackgroundColor(mChoosedColor);
mRequestColorUpdate = false;
updateBackgroundRemovalLimits();
// do my stuff, not important here
}
// remove background:
for (int i = 0; i < mRgb.length; i++) {
curColor = mRgb[i];
// split:
curRed = Color.red(curColor);
curGreen = Color.green(curColor);
curBlue = Color.blue(curColor);
if ((minRed <= curRed) && (curRed <= maxRed) && (minGreen <= curGreen) && (curGreen <= maxGreen) && (minBlue <= curBlue) && (curBlue <= maxBlue)) {
// set alpha to 0 bitwise:
mRgb[i] = curColor & 0x00FFFFFF;
}
}
// update the modified preview screen:
mBitmap.setPixels(mRgb, 0, mSurfWidth, 0, 0, mSurfWidth, mSurfHeight);
if (ivPreviewModified != null) {
ivPreviewModified.setImageBitmap(mBitmap);
}
}
}
あなたはカメラに追加する必要が
@Override
public void onResume() {
super.onResume();
//
camera = Camera.open();
startPreview();
}
そして、これはstackoverflowの:)
public class YuvToRgb {
// Byte decoder : ---------------------------------------------------------------------
public static final void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
// Pulled directly from:
// http://ketai.googlecode.com/svn/trunk/ketai/src/edu/uic/ketai/inputService/KetaiCamera.java
final int frameSize = width * height;
for (int j = 0, yp = 0; j < height; j++) {
int uvp = frameSize + (j >> 1) * width, u = 0, v = 0;
for (int i = 0; i < width; i++, yp++) {
int y = (0xff & ((int) yuv420sp[yp])) - 16;
if (y < 0)
y = 0;
if ((i & 1) == 0) {
v = (0xff & yuv420sp[uvp++]) - 128;
u = (0xff & yuv420sp[uvp++]) - 128;
}
int y1192 = 1192 * y;
int r = (y1192 + 1634 * v);
int g = (y1192 - 833 * v - 400 * u);
int b = (y1192 + 2066 * u);
if (r < 0)
r = 0;
else if (r > 262143)
r = 262143;
if (g < 0)
g = 0;
else if (g > 262143)
g = 262143;
if (b < 0)
b = 0;
else if (b > 262143)
b = 262143;
rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff);
}
}
}
}
からです
関連する問題
- 1. /私のアプリに画像を保存する方法は? (アンドロイド)
- 2. アンドロイドでphpを使って画像をデータベースに保存する方法は?
- 3. 画像を描画してファイルに保存する方法は?
- 4. アンドロイドで画像を保存する
- 5. 処理された画像をアンドロイドに保存する方法
- 6. 保存画像アンドロイド
- 7. 画像を回転して画像を保存する方法
- 8. 次の起動のためにUIViewを保存する(画像ではない)
- 9. アンドロイドに大量の画像を保存しています
- 10. ドッカーコンテナに再起動mysqlの間、私のデータベースを保存する方法
- 11. アンドロイドのsqliteデータベースに画像を保存して取り込む方法は?
- 12. web.pyで画像をアップロードしてディスクに保存する方法
- 13. アンドロイドのボタンをクリックして画像を保存する
- 14. clickボタンイベントはイメージの保存中にアンドロイドで起動しない
- 15. iPhoneアプリカメラやフォトギャラリーで取得した画像のサムネイル画像を生成する
- 16. アンドロイドに画像を保存するのに適していますか?
- 17. アンドロイド:フォルダは、多くの画像を持っているだけで、単一の画像は、私は、画像を保存してい
- 18. sencha touch 2.0.0で画像をアップロードして保存する方法
- 19. 新しいフォルダに画像を保存する方法matlab
- 20. 表紙画像(jQuery)をクリックしてYouTube動画を起動する方法は?
- 21. アンドロイド:オブジェクトに画像を保存するには
- 22. 画像ファイルをバッファ(gif、jpegなど)に保存しています。
- 23. 画像をカメラプレビューSurfaceViewにオーバーレイし、保存する方法は?
- 24. グラフをサーバー上の画像として保存する方法
- 25. コアデータに名前で画像を保存する方法は?
- 26. インストールされているfacebookアプリをアンドロイドでアプリからのステータス画像と共に起動する方法
- 27. アンドロイドで画像に視認時間を設定する方法
- 28. アンドロイドのレイアウトビューを画像またはpdfとしてSDカードに保存する方法は?
- 29. esファイルエクスプローラを使用して画像を保存する方法
- 30. JavaScriptを使って画像を保存する方法は?