水印相机

来源:互联网 发布:js的书 编辑:程序博客网 时间:2024/04/28 05:31

拍照是现在年轻人比较热爱的活动,我也跟随潮流做了一个水印相机,废话不多说了,代码贴上。
package com.jxufe.watermarkercamera;import java.io.File;import org.winplus.gathum.R;import com.jxufe.watermarkercamera.filters.BlockFilter;import com.jxufe.watermarkercamera.filters.BlurFilter;import com.jxufe.watermarkercamera.filters.EclosionFilter;import com.jxufe.watermarkercamera.filters.IceFilter;import com.jxufe.watermarkercamera.filters.LightFilter;import com.jxufe.watermarkercamera.filters.OilFilter;import com.jxufe.watermarkercamera.filters.SketchFilter;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Typeface;import android.graphics.Bitmap.Config;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.provider.Settings.System;import android.text.format.Time;import android.util.Log;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.View.OnClickListener;import android.view.View.OnLongClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class GetAppThumbnailActivity extends Activity {private Button btnThum;private ImageView imgThum;private EditText textView;private double x;// 文集居于画布的坐标private double y;// 文字居于画布的坐标private String imgPath = "/sdcard/img.jpg";private Bitmap bitmap;private WindowManager txt = null; private WindowManager.LayoutParams params = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE);        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                 WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.main);File vFile = new File(imgPath);Uri uri = Uri.fromFile(vFile);Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//startActivityForResult(intent, 100);setupViews();}private void setupViews() {btnThum = (Button) findViewById(R.id.getThum);imgThum = (ImageView) findViewById(R.id.setThum);textView = (EditText) findViewById(R.id.txt);bitmap = BitmapFactory.decodeFile(imgPath);//bitmap = LightFilter.changeToLight(bitmap);// 设置滤镜效果imgThum.setImageBitmap(bitmap);txt = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);params = new WindowManager.LayoutParams();params.type =  WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; params.alpha = 1f;params.type = 2003;params.format = 1;params.x = (int) textView.getX();params.y = (int) textView.getY() + btnThum.getHeight();params.gravity = Gravity.LEFT|Gravity.TOP;params.height = WindowManager.LayoutParams.WRAP_CONTENT;params.width = WindowManager.LayoutParams.WRAP_CONTENT;btnThum.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Bitmap bitmap1 = createBitmap(bitmap);if (bitmap1 != null) {imgThum.setImageBitmap(bitmap1);}}});textView.setOnLongClickListener(new OnLongClickListener() {public boolean onLongClick(View v) {textView.setVisibility(View.INVISIBLE);final TextView t = new TextView(getApplicationContext());t.setText(textView.getText());txt.addView(t, params);t.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {float x = 0, y = 0;switch (event.getAction()) {case MotionEvent.ACTION_MOVE:params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;params.x = (int) (event.getRawX() - x);params.y = (int) (event.getRawY() - y);txt.updateViewLayout(t, params);break;case MotionEvent.ACTION_DOWN:x = event.getX();y = event.getY();break;case MotionEvent.ACTION_UP:params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM& WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;txt.removeView(t);textView.setX(params.x);textView.setY(params.y);textView.setVisibility(View.VISIBLE);x = y = 0;}return true;}});return false;}});}// 给图片添加水印private Bitmap createBitmap(Bitmap src) {int w = src.getWidth();int h = src.getHeight();String mstrTitle = textView.getText().toString();Bitmap bmpTemp = Bitmap.createBitmap(w, h, Config.ARGB_8888);Canvas canvas = new Canvas(bmpTemp);Paint p = new Paint();p.setTypeface(textView.getTypeface());p.setTextSize(35);canvas.drawBitmap(src, 0, 0, p);canvas.drawText(mstrTitle, textView.getX(), textView.getY(), p);canvas.save(Canvas.ALL_SAVE_FLAG);canvas.restore();return bmpTemp;}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 100) {if (resultCode == RESULT_OK) {// Image captured and saved to fileUri specified in the IntentToast.makeText(this, "Image saved", Toast.LENGTH_LONG).show();} else if (resultCode == RESULT_CANCELED) {// User cancelled the image capture} else {// Image capture failed, advise user}}}}
上面就是水印相机的主要实现类,并且我在里面还添加了滤镜的功能,滤镜的类有需要的可以给我点赞留言,我会发给他的哦!!!懂得分享,成就未来!!!

0 0