Android 图片添加水印

android 添加全屏图片水印 先上效果图 要实现上图效果分两步 1.拷贝帮助类到项目中 创建AddWatermarkUtil.java 把下面代码拷贝进去 //package com.myapplication11;这是我的包名,改成你自己的包名 import android.content.Context; import android.graphics.Bitmap; import androi... 阅读详情
ImageUtil 工具类

package com.njhhsoft.egj.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;

public class ImageUtil {

    private static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap watermark,
                                                int paddingLeft, int paddingTop) {
        if (src == null) {
            return null;
        }
        int width = src.getWidth();
        int height = src.getHeight();
        //创建一个bitmap
        Bitmap newb = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
        //将该图片作为画布
        Canvas canvas = new Canvas(newb);
        //在画布 0,0坐标上开始绘制原始图片
        canvas.drawBitmap(src, 0, 0, null);
        //在画布上绘制水印图片
        canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
        // 保存
        canvas.save(Canvas.ALL_SAVE_FLAG);
        // 存储
        canvas.restore();
        return newb;
    }

    /**
     * 绘制文字到右下角
     * @param context
     * @param bitmap
     * @param text
     * @param size
     * @param color
     * @param paddingBottom
     * @param paddingRight
     * @return
     */
    public static Bitmap drawTextToRightBottom(Context context, Bitmap bitmap, String text, String name, String ctx,
             String text1, String name1, String ctx1,
                                               int size, int color, int paddingRight, int paddingBottom) {
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(color);
        paint.setTextSize(dp2px(context, size));
        Rect bounds = new Rect();
        paint.getTextBounds(text, 0, text.length(), bounds);
        return drawTextToBitmap(context, bitmap, text,name, ctx,text1,name1, ctx1, paint, bounds,
                bitmap.getWidth() - bounds.width() - dp2px(context, paddingRight),
                bitmap.getHeight() - dp2px(context, paddingBottom));
    }




    //图片上绘制文字
    private static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String text, String name, String ctx,
                                           String text1, String name1, String ctx1,
                                           Paint paint, Rect bounds, int paddingLeft, int paddingTop) {
        android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();

        paint.setDither(true); // 获取跟清晰的图像采样
        paint.setFilterBitmap(true);// 过滤一些
        if (bitmapConfig == null) {
            bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
        }
        bitmap = bitmap.copy(bitmapConfig, true);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawText(text, paddingLeft, paddingTop, paint);
        canvas.drawText(name, paddingLeft, paddingTop+100, paint);
        canvas.drawText(ctx, paddingLeft, paddingTop+200, paint);

        canvas.drawText(text1, paddingLeft, paddingTop+300, paint);
        canvas.drawText(name1, paddingLeft, paddingTop+400, paint);
        canvas.drawText(ctx1, paddingLeft, paddingTop+500, paint);

        return bitmap;
    }

    /**
     * 缩放图片
     * @param src
     * @param w
     * @param h
     * @return
     */
    public static Bitmap scaleWithWH(Bitmap src, double w, double h) {
        if (w == 0 || h == 0 || src == null) {
            return src;
        } else {
            // 记录src的宽高
            int width = src.getWidth();
            int height = src.getHeight();
            // 创建一个matrix容器
            Matrix matrix = new Matrix();
            // 计算缩放比例
            float scaleWidth = (float) (w / width);
            float scaleHeight = (float) (h / height);
            // 开始缩放
            matrix.postScale(scaleWidth, scaleHeight);
            // 创建缩放后的图片
            return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);
        }
    }

    /**
     * dip转pix
     * @param context
     * @param dp
     * @return
     */
    public static int dp2px(Context context, float dp) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dp * scale + 0.5f);
    }


}

 

 

Activity中的调用方式

 

 

Android 高效的为图片添加水印 YUV拷贝方式添加水印。相信大家都了解通过canvas和bitmap,为图片添加水印的实现方式,十分方便,但是在产品化的代码中,它的耗时就成为了最大的痛点。接下来为大家介绍一种十分高效的方法,通过YUV buffer拷贝添加水印。(1)首先,获取拍照结果的YUV数据。    我这里是直接通过google的Camera2Raw的sample改写,为拍照输出添加YuvImageReader,通过Ima... 阅读详情

相关推荐

Android使用FFmpeg给图片视频添加水印

确定目标最近项目新需求,需要给视频和图片后向添加水印,而前向的添加直接在surfaceview中添加水印相关的bitmap,让每一帧都有水印,然而后向添加一时不知如何处理,所以开始寻找后向添加水印的方式.了解分析通过google百度,了解到ffmpeg开源框架有处理图像音频视频的能力,当然项目时间紧,只能先过一遍拿来就用,所以开始深入查询相关库,开始是ffmpeg-Android,封装到位,通过de

Ervin's Blog 6546

android 图片添加水印

在Android中给图片添加水印可以使用Bitmap、Matrix和Canvas类的方法来实现.如上述代码, 在原有图片的基础上,通过patint和canvas写入了水印文字.本文主要讲下android 中如何给图片添加水印.

赵航的博客 2万+

Android平台水印图片添加实战项目

在移动应用开发中,图像版权保护和信息标识日益重要。水印技术作为数字图像防伪、溯源与品牌展示的关键手段,广泛应用于社交平台、电商图片管理、媒体内容分发等场景。本章系统阐述Android平台上实现水印功能的核心价值,剖析静态水印与动态水印的技术差异,并结合实际业务需求,探讨文本水印、图像水印、实时水印等多种形式的应用边界。同时,介绍水印在用户隐私保护、内容认证及反盗用机制中的作用,为后续深入技术实现打下理论基础。

weixin_42668301的博客 960

Android图片添加水印

最终效果 参考https://github.com/echoMu/WaterMaskDemohttps://github.com/echoMu/WaterMaskDemo 首先要自定义左下角的view WaterMaskView import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.Re......

扣子Coze大师班 8674

android YUV 方式添加水印

通过java api进行添加水印, 效率太慢, 现通过ndk的方式, 用YUV的方式进行水印添加, 简单高效.

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

Android 为图片添加文字水印

先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.watermarkdemo; import android.graphics.Bitmap; import android.os.Environment; import android.su...

baipenggui_bo 4890

cadence CIS 库建立--建立自己维护的CIS数据库

遇到一个问题,在使用cadecnce的时候,就是没有自己的本地/分享的数据库。 在画原理图或者PCB的时候,如果能搭建一个自己的数据库,在局域网或者本地 就好了。出于这样的想法,做了一些探索,找到了一种可能的答案。 由于数据库编制知识的缺乏,要自己建一个数据库似乎花费的时间会比较多。 偶发奇想,如果能够改编CIS 自带的数据库 另建立副本进行维护 就能够省下不少麻烦。 先说下CIS 是个啥。网上一搜:总之CIS 是个好东西。 功能强大。 点击CIS capture 中的 Options CIS Config

qq_29776365的博客 2万+

Android轻松实现拍照加水印

在Android开发中,给照片加水印是一个常用高级功能,尤其是加一个自定义的水印或者图片,今天花时间做一个,以便在以后的开发中用到。

神尐破 3238

802.1AS时间同步机制深度解析:从Sync报文到多域冗余设计

本文深度解析了802.1AS时间同步机制,从Sync与Follow_Up报文的核心交互原理入手,详细阐述了其如何通过精确的时钟频率比测量、链路延迟计算和驻留时间补偿来实现微秒乃至纳秒级同步。文章进一步探讨了802.1AS-2020版本引入的多时钟域冗余设计,为构建高可靠的车载TSN网络提供了关键见解和实战配置指南。

pytorch8learner的博客 457

从零到一:RK3588平台上的星闪模块驱动移植全解析

本文详细解析了在RK3588平台上移植UB37星闪模块驱动的完整流程,涵盖内核配置、设备树适配、驱动编译、功能测试等关键步骤。通过实践指导,帮助开发者掌握星闪技术在嵌入式系统中的集成与应用,提升无线通信模块的开发效率。

qsc90123456的博客 337

Android之调用Camera类并且给图片添加水印并保存到SD卡中

最后总结一下自己遇到的坑:(1)Bitmap的drawText方法传入的绘制坐标如果是(0,0)的话水印肯定是不会显示的,因为被绘制到其它地方去了,所以保守起见,坐标设为Bitmap的宽和高的一半来绘制的话肯定可以看见了。(2)Bitmap必须是通过Bitmap.createBitmap()方法来创建才是像素可改变的,才可以被传入到Canvas对象中。

qq_63630054的博客 1248

ArtMate —— 美术公开课智能体开发全记录

本文档详细描述了一款专为中小学美术公开课设计的智能教学助手的开发过程。该智能体融合了多模态感知、自然语言交互、风格迁移与智能评价等技术,旨在辅助教师开展生动、高效的美术鉴赏与创作课程。全文包含需求分析、系统架构设计、核心模块代码实现、交互界面搭建及完整运行示例,并配有详尽的行内注释和设计思想阐述,为教育技术开发者提供一份可落地、可扩展的参考方案。

huanghm88的专栏 151

android 如何给图片添加水印

在android中如何给图片添加水印,下面截取了部分核心代码,仅供参考: /**      * 获取图片缩小的图片      * @param src      * @return      */     public static Bitmap scaleBitmap(String src)     {         //获取图片的高和宽         Bitmap

JJMM2009的专栏 5707

如何在 R 中执行 Kruskal-Wallis 检验

Kruskal-Wallis 检验用于确定三个或更多独立组的中位数之间是否存在统计学上的显着差异。它被认为是单向方差分析的非参数等效项。本教程介绍了如何在 R 中执行 Kruskal-Wallis 检验。示例:R 中的 Kruskal-Wallis 检验 假设研究人员想知道三种不同的肥料是否会导致不同水平的植物生长。他们随机选择 30 种不同的植物并将它们分成三组,每组 10 株,每组施用不同的肥料。在一个月结束时,他们测量每株植物的高度。使用以下步骤执行 Kruskal-Wallis 检验以确定三个组的中

Mrrunsen的博客 3796

计算电磁学(三)有限差分方法

有限差分方法(FDM)是一种数值处理方法,通过将偏微分方程变换为一组代数方程,通过求解代数方程组来得到原边值问题的近似值。由于有限差分法非常简单,所以也特别的稳定高效。其中时域有限差分方法(FDTD)是电磁分析中的常用方法。在计算电磁学中,常用有限差分方法(finite difference equations)来替代微分方程。一个有限差分法通常包括三个步骤将求解域划分网格用有限差分方程逼近给定的微分方程求解在给定边界条件和初始状态下的方程常用的网格模型方阵斜方阵三角阵圆形阵。

CCC_B的博客 1639

android图片上水印字体颜色,Android给图片添加文字和水印

话不多说 上图gif5新文件.gifpublic class ImageUtil {/*** 设置水印图片在左上角** @param context 上下文* @param src* @param watermark* @param paddingLeft* @param paddingTop* @return*/public static Bitmap createWaterMaskLe...

weixin_31908827的博客 420

【专栏必读】王道考研408操作系统+Linux系统编程万字笔记使用说明及章节导航

王道408考研操作系统)第一章计算机系统概述-第一节1、2:操作系统概念、概念和特征1:理解fork的作用prinf("还没有执行fork函数的本进程为:%d\n" , getpid());//其返回值是pid类型的 sleep(1);if(ret > 0) //父进程返回的是子进程ID {printf("我是父进程,我的id是:%d,我的孩子id是%d\n" , getpid() , ret);sleep(1);} } else if(ret == 0) //子进程fork返回值是0 {.........

快乐江湖的博客 3万+

android 代码水印,Android实现为图片添加水印

本文实例为大家分享了Android实现为图片添加水印的具体代码,供大家参考,具体内容如下添加水印的方法挺简单的,具体内容如下public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInst...

weixin_42350514的博客 590

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android图片上加有汉字,图片添加文字水印-安卓

export function addWatermark(tempFilePath, gText) {let Resources = plus.android.importClass('android.content.res.Resources')let Bitmap = plus.android.importClass('android.graphics.Bitmap')let BitmapFa...

weixin_39858298的博客 311

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android为图片添加水印文字

import android.os.Bundle; import android.widget.ImageView; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Can...

chuoshao2508的博客 216

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android开发给图片添加水印,水印中包含图片或者图标

android开发给图片添加水印,水印中包含图片或者图标

Always_MyHomeTown的博客 1196

Android下载图片并添加图片水印

给图片添加水印 /*** * 添加图片水印 * @param srcBitmap 源图像 * @param watermark 水印图像 * @return */ private static Bitmap createWaterMarkBitmap(Bitmap srcBitmap, Bitmap watermark) { ...

LaoLei3的博客 911

Android 添加图片水印(图片+文字)

直接丢代码了 /** * 左下角添加水印(多行,图标 + 文字) * 参考资料: * Android 对Canvas的translate方法总结 https://blog.youkuaiyun.com/u013681739/article/details/49588549 * @param photo */ public static...

激流小舟的博客 6424

android 水印图片,Android 添加水印图片

/*** 给图片加水印* 水印位置根据服务端给的处理* @param src 原图* @param watermark 水印* @return 加水印的原图*/public Bitmap WaterMask(Bitmap src, Bitmap watermark) {int w = src.getWidth();int h = src.getHeight();Log.i("Wat...

weixin_31207855的博客 215
上一篇: 无错误日志的时候 建议的使用解决办法
下一篇: finished with non-zero exit value问题解决
忙着写BUG
博客等级 码龄9年 11粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值