カメラのプレビューに画像があるカメラ アプリケーションを作成しました。たとえば、これは帽子の画像です。帽子の画像を頭にかぶった人の写真を撮りたいと思います。これは私がやったことです:
mFrameLayout = new FrameLayout(this);
mPreview = new Preview(this);
mFrameLayout.addView(mPreview);
mImage = new ImageView(this);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(100, 100);
layoutParams.leftMargin = 200;
layoutParams.topMargin = 100;
mImage.setLayoutParams(layoutParams);
mImage.setImageResource(R.drawable.gorro);
mFrameLayout.addView(mImage);
mFrameLayout.setOnClickListener(this);
setContentView(mFrameLayout);
プレビュー クラス:
class Preview extends ViewGroup implements SurfaceHolder.Callback {
private final String TAG = "Preview";
SurfaceView mSurfaceView;
SurfaceHolder mHolder;
Size mPreviewSize;
List<Size> mSupportedPreviewSizes;
Camera mCamera;
Preview(Context context) {
super(context);
mSurfaceView = new SurfaceView(context);
addView(mSurfaceView);
}
そして、このクラスにはすべてのサーフェス メソッドが実装されています。カメラの任意の場所をタッチすると、写真が撮影されます。コードは次のとおりです。
public void onClick(View arg0) {
Toast.makeText(this, "Taken!", Toast.LENGTH_LONG).show();
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera c) {
if (imageData != null) {
String root = Environment.getExternalStorageDirectory()
.toString();
File myDir = new File(root + "/saved_images2");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-" + n + ".jpg";
File file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
out.write(imageData);
out.flush();
out.close();
Log.d("teste", "onPictureTaken - wrote bytes: "
+ imageData.length);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
問題は、.png 画像を使用して写真を撮ると、写真がそれなしで保存されることです。
写真を撮ったときに.png画像も保存するにはどうすればよいですか?