调用相机图片拍照生成图片并加水印(非获得缩略图)

本文介绍了一个基于Android系统的应用程序ZTEActivity,该程序通过调用相机拍摄照片,并将照片保存到外部存储设备中。此外,还实现了在拍摄的照片上添加文字的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.zte;

import java.io.File;
import java.io.FileOutputStream;

import android.R.integer;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class ZTEActivity extends Activity {
	private final int CAPTURE_CODE = 100;
	private String localTempImgDir = "TEMP";
	private String localTempImgFileName = "TEMP";
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.zte_mainmenu);

		Button buttoncamera = (Button) findViewById(R.id.button1);
		buttoncamera.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				
				File dir=new File(Environment.getExternalStorageDirectory() + "/");
				Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
				File f=new File(dir, localTempImgFileName);//localTempImgDir和localTempImageFileName是自己定义的名字
				Uri u=Uri.fromFile(f);
				intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
				intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
				startActivityForResult(intent, CAPTURE_CODE);

			}
		});
	}

	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		try {
			if (resultCode != RESULT_OK) {
				return;
			} else if (requestCode == CAPTURE_CODE && resultCode == RESULT_OK) {
				
				File f=new File(Environment.getExternalStorageDirectory()+"/"+localTempImgFileName);
			    Uri u =Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),f.getAbsolutePath(), null, null));
			    Bitmap cbitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), u);
				
//				Bundle bundle = data.getExtras();
//				if (bundle != null) {
//					Bitmap cbitmap = (Bitmap) bundle.get("data");
					File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/DCIM/Camera/");// 设置存放目录
					if (!dir.exists()) {
						dir.mkdir();
					}
					String picname = dir.getAbsolutePath() + "/"+"ZTEPIC_"+ System.currentTimeMillis() + ".jpg";
					File file = new File(picname);
					FileOutputStream outStream = new FileOutputStream(file);
					
				  
					String zte = "ZTE";
					Bitmap zteBitmap = Bitmap.createBitmap(cbitmap.getWidth(),
							cbitmap.getHeight(), Bitmap.Config.ARGB_8888);
					Canvas canvas = new Canvas(zteBitmap);
					Paint p = new Paint();
					p.setColor(Color.RED);
					p.setTextSize(80);
					canvas.drawBitmap(cbitmap, 0, 0, p);
					canvas.drawText(zte, cbitmap.getWidth() - 200,cbitmap.getHeight() - 60, p);
					zteBitmap.compress(CompressFormat.JPEG, 85, outStream);
//
//				}
			}
		} catch (Exception e) {
			Toast.makeText(this, "选择图片错误,图片只能为jpg格式", Toast.LENGTH_SHORT)
					.show();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值