Android图片添加水印图片并把图片保存到文件存储的实现代码
具体代码如下所示:
packagezhangphil.test;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Canvas;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.support.annotation.Nullable;
importandroid.support.v7.app.AppCompatActivity;
importandroid.view.View;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
publicclassJavaActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(@NullableBundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.drawable_activity);
findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
add();
}
});
}
privatevoidadd(){
newThread(newRunnable(){
@Override
publicvoidrun(){
Filezhang=newFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"zhang.jpg");
try{
//原图片。
Bitmapbitmap1=BitmapFactory.decodeStream(newFileInputStream(zhang));
//水印图。
Bitmapbitmap2=BitmapFactory.decodeResource(getResources(),R.drawable.logo);
//原图片添加水印后形成新的文件。
Filezhangphil=newFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"zhangphil.jpg");
if(!zhangphil.exists())
zhangphil.createNewFile();
//原图片添加水印后形成的新Bitmap。在原图片的最左边和做顶部开始添加。
//如果是中间或者底部需要计算x,y的坐标位置。
Bitmapnewbitmap=addImageWatermark(bitmap1,bitmap2,0,0);
//把添加水印后的Bitmap保存到文件。
save(newbitmap,zhangphil,Bitmap.CompressFormat.JPEG,true);
}catch(Exceptione){
e.printStackTrace();
}
}
}).start();
}
/**
*添加图片水印。
*
*@paramsrc源图片
*@paramwatermark图片水印
*@paramx起始坐标x
*@paramy起始坐标y
*@return带有图片水印的图片
*/
publicstaticBitmapaddImageWatermark(Bitmapsrc,Bitmapwatermark,intx,inty){
BitmapretBmp=src.copy(src.getConfig(),true);
Canvascanvas=newCanvas(retBmp);
canvas.drawBitmap(watermark,x,y,null);
returnretBmp;
}
/**
*保存图片到文件File。
*
*@paramsrc源图片
*@paramfile要保存到的文件
*@paramformat格式
*@paramrecycle是否回收
*@returntrue成功false失败
*/
publicstaticbooleansave(Bitmapsrc,Filefile,Bitmap.CompressFormatformat,booleanrecycle){
if(isEmptyBitmap(src))
returnfalse;
OutputStreamos;
booleanret=false;
try{
os=newBufferedOutputStream(newFileOutputStream(file));
ret=src.compress(format,100,os);
if(recycle&&!src.isRecycled())
src.recycle();
}catch(IOExceptione){
e.printStackTrace();
}
returnret;
}
/**
*Bitmap对象是否为空。
*/
publicstaticbooleanisEmptyBitmap(Bitmapsrc){
returnsrc==null||src.getWidth()==0||src.getHeight()==0;
}
}
事先需要先放好源图片Pictures/zhang.jpg和水印图片res/drawable/logo.jpg。
权限:
总结
以上所述是小编给大家介绍的Android图片添加水印图片并把图片保存到文件存储的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!