1

カメラ プレビュー レイヤーがあります。その上で、アプリで透明な小さな画像を移動(ドラッグアンドドロップ)してズームしています。そこで、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;
}
4

0 に答える 0