【发布时间】:2025-11-23 22:35:02
【问题描述】:
我已经在 amy 应用程序中实现了 android Camera 功能。
现在我想将任何透明图像与捕获的相机图像结合起来,然后将该图像保存到图库中,那么如何完成呢??
任何代码都会被真正欣赏。 谢谢。
编辑: 我正在使用此代码来捕获和保存图像所以,我应该如何实现这些东西。
takePhotoBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) { // <5>
ImageCaptureCallback iccb = null;
try {
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
values.put(Media.DESCRIPTION, "Image capture by camera");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
iccb = new ImageCaptureCallback( getContentResolver().openOutputStream(uri));
// to put the Image on captured image.
Canvas canvas = new Canvas();
Bitmap kangoo = BitmapFactory.decodeResource(getResources(),
R.drawable.icon);
canvas.drawColor(Color.argb(160, 21, 140, 21));
canvas.drawBitmap(kangoo, 130, 10, null);
} catch(Exception ex ){
ex.printStackTrace();
Log.e(getClass().getSimpleName(), ex.getMessage(), ex);
}
camera.takePicture(mShutterCallback, mPictureCallbackRaw, iccb);
}
});
Camera.PictureCallback mPictureCallbackRaw = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera c) {
Log.e(getClass().getSimpleName(), "PICTURE CALLBACK RAW: " + data);
System.out.println("\n\n\n\nThe Data in mPictureCallbackRaw is :"+data);
//camera.startPreview(); // Added StastPreview();
}
};
Camera.PictureCallback mPictureCallbackJpeg= new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera c) {
Log.e(getClass().getSimpleName(), "PICTURE CALLBACK JPEG: data.length = " + data);
System.out.println("\n\n\n\nThe Data in mPictureCallbackJPEG is :"+data);
camera.startPreview();
}
};
Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() {
public void onShutter() {
Log.e(getClass().getSimpleName(), "SHUTTER CALLBACK");
}
};
public class ImageCaptureCallback implements PictureCallback {
private OutputStream filoutputStream;
public ImageCaptureCallback(OutputStream filoutputStream) {
this.filoutputStream = filoutputStream;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
Log.v(getClass().getSimpleName(), "onPictureTaken=" + data + " length = " + data.length);
filoutputStream.write(data);
filoutputStream.flush();
filoutputStream.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
【问题讨论】:
-
我想我可以使用画布,但我不知道那是怎么回事。可能很容易,但我真的需要帮助来实现它。
-
您可以使用画布组合两个位图图像。
标签: android android-layout android-emulator android-widget