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图片添加水印图片并把图片保存到文件存储的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!