カメラ プレビュー レイヤーがあります。その上で、アプリで透明な小さな画像を移動(ドラッグアンドドロップ)してズームしています。そこで、pngの画像ビューを使用し、マトリックスを使用してズームします。イメージビューをズームして希望の場所に配置した後、カメラプレビューからの背景とイメージビューのズーム位置と移動位置を持つ前景を持つ1つの画像を取得する必要があります。
これをする、
カメラで画像をキャプチャしています。
次に、カメラからキャプチャした画像の画像ビューに画像を描画します。
次のコードで試しましたが、うまくいきませんでした。
private PictureCallback mPicture = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (pictureFile == null){
Log.d("1", "Error creating media file, check storage permissions: ");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
//captured=pictureFile.getAbsoluteFile();
picturefilepath=pictureFile.getPath();
ImageView imgv= (ImageView) findViewById(R.id.midimage);
//Matrix ms=imgv.getImageMatrix();
Bitmap b=overlay(BitmapFactory.decodeFile(pictureFile.getPath()), imgv);
ImageView capturedset= (ImageView) findViewById(R.id.capturedimage);
capturedset.setImageBitmap(b);
} catch (FileNotFoundException e) {
Log.d("2", "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d("3", "Error accessing file: " + e.getMessage());
}
}
};
private Bitmap overlay(Bitmap bmp2, ImageView view) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp2.getWidth(), bmp2.getHeight(), bmp2.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp2, canvas.getMatrix(), null);
view.draw(canvas);
return bmOverlay;
}