您的位置:首页 > 其它

12.10工作

2015-12-10 11:56 375 查看
1.安卓中给图片加水印和文字并保存到本地

package com.example.jiyao.picturecombine;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
ImageView mIv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button= (Button) findViewById(R.id.button);
Button button1= (Button) findViewById(R.id.button2);
mIv= (ImageView) findViewById(R.id.imageView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap=jiashuiyin();

mIv.setImageBitmap(bitmap);
saveBitmap(bitmap);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap=drawTextToBitmap("哇,美女啊");
mIv.setImageBitmap(bitmap);
}
});
}
/**保存Bitmap到本地*/
private void saveBitmap(Bitmap bm) {
File f=new File("/sdcard/", "picName.jpg");
if (f.exists()){
f.delete();
}
try{
FileOutputStream out = new FileOutputStream(f);
bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
Toast.makeText(MainActivity.this,"保存成功!",Toast.LENGTH_SHORT).show();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}

}

/**
* 1.得到一张资源图片
* 2.解析为Bitmap
* 3.合成两张图片
* */
private Bitmap jiashuiyin() {
Bitmap  pictureBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.beauty);
Bitmap  watermark=BitmapFactory.decodeResource(this.getResources(), R.drawable.life_watermark_small);

int w=pictureBitmap.getWidth();
int h=pictureBitmap.getHeight();

int ww=watermark.getWidth();
int wh=watermark.getHeight();

Bitmap newb = Bitmap.createBitmap( w, h, Bitmap.Config.ARGB_8888);//创建一个新的和SRC

Canvas cv = new Canvas(newb);
//draw src into
cv.drawBitmap(pictureBitmap, 0, 0, null );//在 0,0坐标开始画入src
//draw watermark into
//      cv.drawBitmap( watermark, w - ww + 5, h - wh + 5, null );//在src的右下角画入水印
cv.drawBitmap( watermark, 0, h - wh, null );//在src的右下角画入水印
//save all clip
cv.save( Canvas.ALL_SAVE_FLAG );//保存
//store
cv.restore();//存储

return newb;
}
/**
* 图片上动态添加文字
* */
public Bitmap drawTextToBitmap(String text) {
Bitmap  pictureBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.beauty);
//临时标记图
Bitmap imgTemp = Bitmap.createBitmap(pictureBitmap.getWidth(), pictureBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas=new Canvas(imgTemp);
Paint paint=new Paint();
paint.setDither(true);//获取跟清晰的图像采样
paint.setFilterBitmap(true);//过滤一些

Rect src = new Rect(0, 0, pictureBitmap.getWidth(), pictureBitmap.getHeight());//创建一个指定的新矩形的坐标
Rect dst = new Rect(0, 0, pictureBitmap.getWidth(), pictureBitmap.getHeight());//创建一个指定的新矩形的坐标

canvas.drawBitmap(pictureBitmap, src, dst, paint);//将pictureBitmap缩放或则扩大到dst使用的填充区photoPaint

Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG
| Paint.DEV_KERN_TEXT_FLAG);//设置画笔
textPaint.setTextSize(200.0f);
textPaint.setTypeface(Typeface.DEFAULT_BOLD); // 采用默认的宽度
//textPaint.setShadowLayer(3f, 1, 1,this.getResources().getColor(android.R.color.background_dark));//阴影的设置
textPaint.setColor(Color.WHITE);

canvas.drawText(text, pictureBitmap.getWidth() /2-5, pictureBitmap.getHeight()/2+5,
textPaint);//绘制上去字,开始未知x,y采用那只笔绘制(控制位置)

canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
return imgTemp;
}
}
2.手势操作
private GestureDetector gestureDetector=null;
int i=1;
private void initGesture(){
gestureDetector=new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return super.onFling(e1, e2, velocityX, velocityY);
}

@Override
public boolean onDoubleTap(MotionEvent e) {
Bitmap bitmap=rotateBitmap(90*i++,currentBitmap);
mGPUImageView.setImage(bitmap);
return super.onDoubleTap(e);
}
});

}

@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: