欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)拍照添加時(shí)間水印

 更新時(shí)間:2022年03月29日 12:27:23   作者:陽(yáng)光燦爛的夜  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)拍照添加時(shí)間水印,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)拍照添加時(shí)間水印的具體代碼,供大家參考,具體內(nèi)容如下

效果如下圖 :

1、拍照

// 非空判斷 拍照
?if (mCamera0 != null){
? ? ? ? ? ? ? ? mCamera0.takePicture(null, null, jpeg0); // 1 front
? ? ? ? ? ? }

2、創(chuàng)建JPEG數(shù)據(jù)回調(diào)

// 創(chuàng)建JPEG圖片回調(diào)數(shù)據(jù)對(duì)象
public static PictureCallback jpeg0 = new PictureCallback() {
? ? ? ? @Override
? ? ? ? public void onPictureTaken(byte[] data, Camera camera) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? // 獲得圖片
? ? ? ? ? ? ? ? Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
? ? ? ? ? ? ? ? //添加時(shí)間水印
? ? ? ? ? ? ? ? Bitmap mTimeWatermark = AddTimeWatermark(mBitmap);
? ? ? ? ? ? ? ? // 判斷文件夾是否存在,傳入圖片存儲(chǔ)路徑
? ? ? ? ? ? ? ? CreateFile(StaticVariables.mPicPath);
?
? ? ? ? ? ? ? ? String mPath = StaticVariables.mPicPath + System.currentTimeMillis()+".jpeg"; ? ? ? //臨時(shí)測(cè)試命名
?
? ? ? ? ? ? ? ? File mFile = new File(mPath);
?
? ? ? ? ? ? ? ? BufferedOutputStream mOutputStream = new BufferedOutputStream(new FileOutputStream(mFile));
? ? ? ? ? ? ? ? // 將圖片壓縮到流中
? ? ? ? ? ? ? ? mTimeWatermark.compress(Bitmap.CompressFormat.JPEG,100,mOutputStream); ? ? ?//時(shí)間水印
?
? ? ? ? ? ? ? ? mOutputStream.flush();
? ? ? ? ? ? ? ? mOutputStream.close();
?
? ? ? ? ? ? ? ? // 停止預(yù)覽
? ? ? ? ? ? ? ? mCamera0.stopPreview();
? ? ? ? ? ? ? ? mCamera0.release();
? ? ? ? ? ? ? ? mCamera0 = Camera.open(4);
? ? ? ? ? ? ? ? Parameters parameters = mCamera0.getParameters();
? ? ? ? ? ? ? ? // parameters.setPreviewSize(width, height);
? ? ? ? ? ? ? ? mCamera0.setParameters(parameters);
? ? ? ? ? ? ? ? mCamera0.setDisplayOrientation(0);
?
? ? ? ? ? ? ? ? mCamera0.setPreviewTexture(mTextureView0.getSurfaceTexture());
?
? ? ? ? ? ? ? ? // 處理完數(shù)據(jù)之后預(yù)覽
? ? ? ? ? ? ? ? mCamera0.startPreview();
? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? // TODO Auto-generated catch block
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
?
};

3、添加時(shí)間水?。篈ddTimeWatermark(mBitmap);

/**
? ? ?* 添加時(shí)間水印
? ? ?* @param mBitmap
? ? ?* @return mNewBitmap
*/
? ? private ?Bitmap AddTimeWatermark(Bitmap mBitmap) {
? ? ? ? //獲取原始圖片與水印圖片的寬與高
? ? ? ? int mBitmapWidth = mBitmap.getWidth();
? ? ? ? int mBitmapHeight = mBitmap.getHeight();
? ? ? //定義底片 大小 將mBitmap填充 ?
? ? ? ? Bitmap mNewBitmap = Bitmap.createBitmap(mBitmapWidth, mBitmapHeight, Bitmap.Config.ARGB_8888);
? ? ? ? Canvas mCanvas = new Canvas(mNewBitmap);
? ? ? ? //向位圖中開(kāi)始畫(huà)入MBitmap原始圖片
? ? ? ? mCanvas.drawBitmap(mBitmap,0,0,null);
? ? ? ? //添加文字
? ? ? ? Paint mPaint = new Paint();
? ? ? ? String mFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EEEE").format(new Date());
? ? ? ? //String mFormat = TingUtils.getTime()+"\n"+" 緯度:"+GpsService.latitude+" ?經(jīng)度:"+GpsService.longitude;
? ? ? ? mPaint.setColor(Color.RED);
? ? ? ? mPaint.setTextSize(20);
? ? ? ? //水印的位置坐標(biāo)
? ? ? ? mCanvas.drawText(mFormat, (mBitmapWidth * 1) / 10,(mBitmapHeight*14)/15,mPaint);
// ? ? ? ?mCanvas.save(Canvas.ALL_SAVE_FLAG);
? ? ? ? mCanvas.save();
? ? ? ? mCanvas.restore();
?
? ? ? ? return mNewBitmap;
}

4、創(chuàng)建文件夾

// 創(chuàng)建 文件夾
public static void CreateFile(String path) {
? ? ? ? File destDir = new File(path);
? ? ? ? if (!destDir.exists()) {
? ? ? ? ? ? Log.i(TAG,"文件夾創(chuàng)建成功");
? ? ? ? ? ? destDir.mkdirs();
? ? ? ? } else {
? ? ? ? ? ? Log.i(TAG,"文件夾已存在");
? ? ? ? }
? ? }

5、Java 實(shí)現(xiàn)添加水印

/**
?? ? * 設(shè)置文字水印
?? ? *?
?? ? * @param sourceImg
?? ? * ? ? ? ? ? ?源圖片路徑
?? ? * @param targetImg
?? ? * ? ? ? ? ? ?保存的圖片路徑
?? ? * @param content
?? ? * ? ? ? ? ? ?內(nèi)容
?? ? * @param font
?? ? * ? ? ? ? ? ?水印字體大小
? ? ? ? ?* Font font = new Font("微軟雅黑", Font.BOLD, 16);
?? ? * @throws IOException
*/
public void addWatermark(String sourceImg, String targetImg,String content, Font font) throws IOException {
?? ??? ?
?? ??? ?File srcImgFile = new File(sourceImg);
?? ??? ?Image srcImg = ImageIO.read(srcImgFile);
?
?? ??? ?int srcImgWidth = srcImg.getWidth(null);
?? ??? ?int srcImgHeight = srcImg.getHeight(null);
?
?? ??? ?BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight,BufferedImage.TYPE_INT_RGB);
?? ??? ?Graphics2D g = bufImg.createGraphics();
?? ??? ?g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
?
?? ??? ?g.setColor(Color.BLACK);
?? ??? ?g.setFont(font);
?
?? ??? ?if (content.equals("model")) {
?? ??? ??? ?// 添加 設(shè)備名、MADE IN
?? ??? ??? ?g.drawString(content, 350, 110);
?? ??? ??? ?g.drawString(mMade, 50, 340);
?? ??? ?} else {
?? ??? ??? ?// 設(shè)置水印的坐標(biāo) 標(biāo)題
?? ??? ??? ?g.drawString(content, 50, 115);
?? ??? ?}
?? ??? ?g.dispose();
?
?? ??? ?// 輸出圖片
?? ??? ?FileOutputStream outImgStream = new FileOutputStream(targetImg);
?? ??? ?ImageIO.write(bufImg, "jpg", outImgStream);
?? ??? ?System.out.println("文字水印添加完成");
?? ??? ?outImgStream.flush();
?? ??? ?outImgStream.close();
?? ?}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android自定義播放器控件VideoView

    Android自定義播放器控件VideoView

    這篇文章主要介紹了Android自定義播放器控件VideoView的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Android 實(shí)現(xiàn)文件夾排序功能的實(shí)例代碼

    Android 實(shí)現(xiàn)文件夾排序功能的實(shí)例代碼

    這篇文章主要介紹了Android 實(shí)現(xiàn)文件夾排序功能的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-09-09
  • Android EditText 實(shí)現(xiàn)監(jiān)聽(tīng)實(shí)例

    Android EditText 實(shí)現(xiàn)監(jiān)聽(tīng)實(shí)例

    本文主要介紹Android EditText 組件 實(shí)現(xiàn)監(jiān)聽(tīng)事件,并附有代碼實(shí)例,在Android開(kāi)發(fā)過(guò)程中如果能用到可以參考下
    2016-07-07
  • Android幾種多渠道打包的步驟詳解

    Android幾種多渠道打包的步驟詳解

    在不同的應(yīng)用市場(chǎng)可能有不同的統(tǒng)計(jì)需求,需要為每個(gè)應(yīng)用市場(chǎng)發(fā)布一個(gè)安裝包,這里就引出了Android的多渠道打包。這篇文章主要介紹了Android幾種多渠道打包,需要的朋友可以參考下
    2019-09-09
  • Android閃屏效果實(shí)現(xiàn)方法

    Android閃屏效果實(shí)現(xiàn)方法

    這篇文章主要介紹了Android閃屏效果實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android閃屏效果的實(shí)現(xiàn)原理及相關(guān)功能與布局設(shè)置技巧,需要的朋友可以參考下
    2016-01-01
  • Android仿美團(tuán)拖拽效果實(shí)例代碼

    Android仿美團(tuán)拖拽效果實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Android仿美團(tuán)拖拽效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android仿支付寶手勢(shì)密碼解鎖功能

    Android仿支付寶手勢(shì)密碼解鎖功能

    這篇文章主要為大家詳細(xì)介紹了Android仿支付寶手勢(shì)密碼解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android自定義recyclerView實(shí)現(xiàn)時(shí)光軸效果

    Android自定義recyclerView實(shí)現(xiàn)時(shí)光軸效果

    這篇文章主要介紹了Android自定義recyclerView實(shí)現(xiàn)時(shí)光軸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Android 列表形式的切換的示例代碼

    Android 列表形式的切換的示例代碼

    本篇文章主要介紹了Android 列表形式的切換的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法

    androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法

    這篇文章主要介紹了androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論