精华内容
下载资源
问答
  • 如何制作图片水印
    千次阅读
    2018-08-30 11:46:11

    概述

    以前都是后端同学来处理的,现在有了canvas,
    前端同学也可以做出水印来了,
    而且要比后端同学做的要精美漂亮。

    制作水印的几个步骤

    1. 在html中准备好canvas标签
    2. 将图片绘制到canvas元素上
    3. 向图片上添加水印

    canvas标签

    <canvas id="myCanvas" width="500" height="500">
        你的浏览器不支持canvas标签,请使用最新版的chrome浏览器
    </canvas>

    将图片绘制到canvas

    加载图片

    // 通过ajax从后台获取,这里直接使用一个图片
    var img = new Image();   
    img.src = './img/bg.jpg'; 

    将图片绘制到canvas

    img.onload = function(){ //图片加载完成后
        var canvas = document.getElementById("myCanvas");
        // 获取canvas句柄(上下文)
        var ctx = canvas.getContext("2d");
        // 绘制图片
        ctx.drawImage(img,0,0);
    }

    向图片上添加水印

    在onload函数中

    // 绘制水印
    ctx.font="20px Microsoft Yahei";
    ctx.fillStyle = "rgba(255,255,255,0.5)";
    ctx.fillText("my images",100,100);

    参考文章
    - canvas实现平铺水印

    canvas应用
    - 粒子效果

    更多相关内容
  • 制作图片水印

    2013-01-17 18:54:36
    制作图片水印
  • java 制作图片水印代码 图片水印 水印
  • 记录一个制作图片水印的功能

    千次阅读 2022-03-12 16:11:49
    对图片生成图片水印或者文字水印 ,用户可以自定义自己的图片水印 思路就是将文字和图片水印合成到一张图片上面去,前台展示合成效果 后台合成后保存到cos上面,并在数据库保存相关信息,方便用户下次引用 前台样式 ...

    功能介绍

    对图片生成图片水印或者文字水印 ,用户可以自定义自己的图片水印

    思路就是将文字和图片水印合成到一张图片上面去,前台展示合成效果

    后台合成后保存到cos上面,并在数据库保存相关信息,方便用户下次引用

    前台样式

    在这里插入图片描述
    在这里插入图片描述

    后端代码

    接参DTO

    
    @Data
    public class WatermarkTemplateDTO extends BasePageParamDTO{
    
    
    
    	/**
    	 * 主键ID
    	 */
    	@ApiModelProperty(value="主键ID")
    	private Long id;
    
    	/**
    	 * 用户名
    	 */
    	@ApiModelProperty(value="用户名")
    	private Long userId;
    
    	/**
    	 * 水印名称
    	 */
    	@ApiModelProperty(value="水印名称")
    	private String watermarkName;
    
    	/**
    	 * 合成后的水印图片地址
    	 */
    	@ApiModelProperty(value="合成后的水印图片地址")
    	private String watermarkUrl;
    
    	/**
    	 * 素材图片URL地址
    	 */
    	@ApiModelProperty(value="素材图片URL地址")
    	private String picUrl;
    
    	/**
    	 * 图片透明度
    	 */
    	@ApiModelProperty(value="图片透明度")
    	private Integer picOpacity;
    
    	/**
    	 * 图片左边距
    	 */
    	@ApiModelProperty(value="图片左边距")
    	private Integer picLeft;
    
    	/**
    	 * 图片上边距
    	 */
    	@ApiModelProperty(value="图片上边距")
    	private Integer picTop;
    
    	/**
    	 * 图片宽度
    	 */
    	@ApiModelProperty(value="图片宽度")
    	private Integer picWidth;
    
    	/**
    	 * 图片高度
    	 */
    	@ApiModelProperty(value="图片高度")
    	private Integer picHeight;
    
    	/**
    	 * 水印文字
    	 */
    	@ApiModelProperty(value="水印文字")
    	private String watermarkText;
    
    	/**
    	 * 文字透明度
    	 */
    	@ApiModelProperty(value="文字透明度")
    	private Float textOpacity;
    
    	/**
    	 * 文字字体大小
    	 */
    	@ApiModelProperty(value="文字字体大小")
    	private Integer textSize;
    
    	/**
    	 * 文字字体颜色
    	 */
    	@ApiModelProperty(value="文字字体颜色")
    	private String textColor;
    
    	/**
    	 * 文字位置-距离图片的左边距
    	 */
    	@ApiModelProperty(value="文字位置-距离图片的左边距")
    	private Integer textLeft;
    
    	/**
    	 * 文字位置-距离图片的上边距
    	 */
    	@ApiModelProperty(value="文字位置-距离图片的上边距")
    	private Integer textTop;
    
    	/**
    	 * 文字字体
    	 */
    	@ApiModelProperty(value="文字字体")
    	private String textFont;
    
    	/**
    	 * 图片翻转,0:不翻转  1: 水平翻转  2 : 垂直翻转
    	 */
    	@ApiModelProperty(value="图片翻转,0:不翻转  1: 水平翻转  2 : 垂直翻转")
    	private Integer picTurn;
    
    	/**
    	 * 图片旋转角度
    	 */
    	@ApiModelProperty(value="图片旋转角度")
    	private Integer picRotate;
    
    	/**
    	 * 创建时间
    	 */
    	@ApiModelProperty(value="创建时间")
    	private Date createDate;
    
    }
    
    
    

    数据库实体类

    
    
    /**
     * 水印模板表
     */
    @ApiModel(value = "com-menglar-soap-item-pojo-mysql-WatermarkTemplate")
    @Data
    @NoArgsConstructor
    @TableName(value = "item_watermark_template")
    public class WatermarkTemplate implements Serializable {
        /**
         * 主键ID
         */
        @ApiModelProperty(value = "主键ID")
        private Long id;
    
        /**
         * 用户名
         */
        @ApiModelProperty(value = "用户名")
        private Long userId;
    
        /**
         * 水印名称
         */
        @ApiModelProperty(value = "水印名称")
        private String watermarkName;
    
        /**
         * 合成后的水印图片地址
         */
        @ApiModelProperty(value = "合成后的水印图片地址")
        private String watermarkUrl;
    
        /**
         * 素材图片URL地址
         */
        @ApiModelProperty(value = "素材图片URL地址")
        private String picUrl;
    
        /**
         * 图片透明度
         */
        @ApiModelProperty(value = "图片透明度")
        private Integer picOpacity;
    
        /**
         * 图片左边距
         */
        @ApiModelProperty(value = "图片左边距")
        private Integer picLeft;
    
        /**
         * 图片上边距
         */
        @ApiModelProperty(value = "图片上边距")
        private Integer picTop;
    
        /**
         * 图片宽度
         */
        @ApiModelProperty(value = "图片宽度")
        private Integer picWidth;
    
        /**
         * 图片高度
         */
        @ApiModelProperty(value = "图片高度")
        private Integer picHeight;
    
        /**
         * 水印文字
         */
        @ApiModelProperty(value = "水印文字")
        private String watermarkText;
    
        /**
         * 文字透明度
         */
        @ApiModelProperty(value = "文字透明度")
        private Float textOpacity;
    
        /**
         * 文字字体大小
         */
        @ApiModelProperty(value = "文字字体大小")
        private Integer textSize;
    
        /**
         * 文字字体颜色
         */
        @ApiModelProperty(value = "文字字体颜色")
        private String textColor;
    
        /**
         * 文字位置-距离图片的左边距
         */
        @ApiModelProperty(value = "文字位置-距离图片的左边距")
        private Integer textLeft;
    
        /**
         * 文字位置-距离图片的上边距
         */
        @ApiModelProperty(value = "文字位置-距离图片的上边距")
        private Integer textTop;
    
        /**
         * 文字字体
         */
        @ApiModelProperty(value = "文字字体")
        private String textFont;
    
        /**
         * 图片翻转,0:不翻转  1: 水平翻转  2 : 垂直翻转
         */
        @ApiModelProperty(value = "图片翻转,0:不翻转  1: 水平翻转  2 : 垂直翻转")
        private Integer picTurn;
    
        /**
         * 图片旋转角度
         */
        @ApiModelProperty(value = "图片旋转角度")
        private Integer picRotate;
    
        /**
         * 创建时间
         */
        @ApiModelProperty(value = "创建时间")
        private Date createDate;
    
        private static final long serialVersionUID = 1L;
    }
    
    

    水印生成方法

    /**
    	 * 上传水印模板
    	 * @param wtDto
    	 * @return
    	 */
    	@Override
    	public Result uploadWatermarkPic(WatermarkTemplateDTO wtDto) {
    		if (StringUtils.isBlank(wtDto.getPicUrl()) && StringUtils.isBlank(wtDto.getWatermarkText())) {
    			throw new BusinessException("素材图片/水印文字不能为空");
    		}
    		try {
    			BufferedImage output = new BufferedImage(800, 800, BufferedImage.TYPE_INT_ARGB);
    			Graphics2D g2 = output.createGraphics();
    			output = g2.getDeviceConfiguration().createCompatibleImage(800, 800, Transparency.TRANSLUCENT);
    			g2 = output.createGraphics();
    			//调制透明度
    			for (int j1 = output.getMinY(); j1 < output.getHeight(); j1++) {
    				for (int j2 = output.getMinX(); j2 < output.getWidth(); j2++) {
    					int rgb = output.getRGB(j2, j1);
    					rgb = ((0 * 255 / 10) << 24) | (rgb & 0x00ffffff);
    					output.setRGB(j2, j1, rgb);
    				}
    			}
    			//1、先画一张完全透明的背景图
    			g2.drawImage(output, 0, 0, 800, 800, null);
    			//图片水印
    			if(StringUtils.isNotBlank(wtDto.getPicUrl())){
    				log.info("图片参数:opacity:{},height:{},picLeft:{},picTop:{},picWidth:{}"
    					, wtDto.getPicOpacity()
    					, wtDto.getPicHeight()
    					, wtDto.getPicLeft()
    					, wtDto.getPicTop()
    					, wtDto.getPicWidth());
    				Integer alpha = wtDto.getPicOpacity();
    				if(alpha == null
    					|| wtDto.getPicOpacity() == null
    					|| wtDto.getPicHeight() == null
    					|| wtDto.getPicLeft() == null
    					|| wtDto.getPicTop() == null
    					|| wtDto.getPicWidth() == null){
    					throw new BusinessException("图片参数错误!");
    				}
    				//检查透明度是否越界
    				if (alpha < 0) {
    					alpha = 0;
    				} else if (alpha > 10) {
    					alpha = 10;
    				}
    				InputStream inputStream = CompositeWatermarkUtil.downloadFile(wtDto.getPicUrl());
    				BufferedImage image = ImageIO.read(inputStream);
    				//2、再画水印素材图片
    				g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,alpha.floatValue()/10));
    				g2.drawImage(image
    					, equalRatioCalculation(wtDto.getPicLeft())
    					, equalRatioCalculation(wtDto.getPicTop())
    					, equalRatioCalculation(wtDto.getPicWidth())
    					, equalRatioCalculation(wtDto.getPicHeight()), null);
    			}
    
    			//文字水印
    			if (StringUtils.isNotBlank(wtDto.getWatermarkText())) {
    				log.info("文字参数:textLeft:{},TextLeft:{},TextOpacity:{},TextColor:{},TextSize:{},TextFont:{}"
    					, wtDto.getTextLeft()
    					, wtDto.getTextTop()
    					, wtDto.getTextOpacity()
    					, wtDto.getTextColor()
    					, wtDto.getTextSize()
    					, wtDto.getTextFont());
    				if(wtDto.getTextLeft() == null
    					|| wtDto.getTextTop() == null
    					|| wtDto.getTextOpacity() == null
    					|| wtDto.getTextColor() == null
    					|| wtDto.getTextSize() == null
    					|| wtDto.getTextFont() == null){
    					throw new BusinessException("文字参数错误!");
    				}
    
    				try {
    					String[] availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    					log.info("测试环境字体列表数组为:" + availableFontFamilyNames);
    					if(availableFontFamilyNames != null){
    						log.info("测试环境字体列表数组长度:" + availableFontFamilyNames.length);
    						log.info("测试环境字体列表获取首个:" + availableFontFamilyNames[0]);
    					}
    					for(String s : availableFontFamilyNames){
    						log.info(s);
    					}
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    
    
    				//3、画文字
    				String textColor = wtDto.getTextColor();
    				//字体
    				Font font = new Font(wtDto.getTextFont(), Font.BOLD, wtDto.getTextSize());//水印字体,大小
    				//颜色
    				Color color = new Color(Integer.decode(textColor));
    				g2.setFont(font);
    				g2.setColor(color);
    				g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, wtDto.getTextOpacity()));
    				log.info("画文字开始");
    				g2.drawString(wtDto.getWatermarkText()
    					, equalRatioCalculation(wtDto.getTextLeft())
    					, equalRatioCalculation(wtDto.getTextTop()));
    				log.info("画文字结束");
    			}
    
    			//上传合成的水印
    			ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
    			ImageIO.write(output, "png", arrayOutputStream);
    			byte[] bytes = arrayOutputStream.toByteArray();
    			ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
    			Long userId = SecurityUtils.getUserId();
    
    			//如果是编辑后保存,则有水印模板URL,使用原水印模板地址,新水印模板会替换掉旧的
    			if (BeanUtil.isNotEmpty(wtDto.getId())) {
    				WatermarkTemplate watermarkTemplate = watermarkTemplateMapper.selectOne(Wrappers.lambdaQuery(WatermarkTemplate.class)
    					.eq(WatermarkTemplate::getId, wtDto.getId()));
    				String key = cosClient.buildKey(watermarkTemplate.getWatermarkUrl());
    				cosClient.uploadFile(byteArrayInputStream, key);
    				BeanUtil.copyProperties(wtDto, watermarkTemplate, CopyOptions.create().setIgnoreError(true).ignoreNullValue());
    				watermarkTemplateMapper.updateByPrimaryKeySelective(watermarkTemplate);
    			} else {
    				//没有水印模板URL则是新增水印模板,生成新的
    				String key = cosClient.buildStoragePath(FileTypeEnum.IMAGE, "png", userId);
    				String watermarkTemplateUrl = cosClient.uploadFile(byteArrayInputStream, key);
    				WatermarkTemplate watermarkTemplate = new WatermarkTemplate();
    				BeanUtil.copyProperties(wtDto, watermarkTemplate, CopyOptions.create().setIgnoreError(true).ignoreNullValue());
    				watermarkTemplate.setWatermarkUrl(watermarkTemplateUrl);
    				watermarkTemplate.setCreateDate(new Date());
    				watermarkTemplate.setUserId(userId);
    				watermarkTemplateMapper.insert(watermarkTemplate);
    			}
    			return Result.ok(StatusCode.SUCCESS, "保存水印成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    			return Result.errorMessage("保存水印失败,系统异常", StatusCode.FAILURE.code());
    		}
    	}
    
    
    
    	/**
    	 * 水印素材位置等比例计算
    	 * @param value
    	 * @return
    	 */
    	private Integer equalRatioCalculation(Integer value){
    		BigDecimal waterSize = new BigDecimal(800);//水印最大尺寸
    		BigDecimal editerSize = new BigDecimal(500);//前端编辑框尺寸
    		BigDecimal ratio = editerSize.divide(waterSize);
    		BigDecimal valBd = new BigDecimal(value);
    		BigDecimal finalVal = valBd.divide(ratio);
    		int i = finalVal.intValue();
    		return i;
    	}
    
    
    展开全文
  • 添加水印方法(水印图片,目标图片),添加在右下角(根据坐标显示) 针对网页图片添加水印,用java语言编写,很简单。 // 获取水印图片的路径 String planeImage = request.getSession().getServletContext()....
  • 主要为大家详细介绍了Unity实现图片水印生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 图片水印生成器,可以给指定图片文件或者目录添加水印,水印支持自定义文本、位置、颜色、大小。 # -*- encoding=utf-8 -*- import time from PIL import Image, ImageDraw,ImageFont,ImageEnhance """图片水印...

    制作一个水印生成器,方便训练水印图片数据采集。
    图片水印生成器,可以给指定图片文件或者目录添加水印,水印支持自定义文本、位置、颜色、大小。

    
    # -*- encoding=utf-8 -*-
    import time
    from PIL import Image, ImageDraw,ImageFont,ImageEnhance
    
    """图片水印生成器,自定义文字,颜色,大小,位置"""
    
    
    # 横向上方水印
    def auto_make_watermark1(filepath,content,color,savefilepath):
        """
        :param filepath: 图片路径
        :param content: 水印文字
        :param color: 水印颜色
        :param savefilepath: 保存路径
        :return:
        """
        image = Image.open(filepath).convert('RGB')
        draw = ImageDraw.Draw(image)
        font=ImageFont.truetype("simsun.ttc", 40, encoding="unic",index=1)  # 设置水印字体
        draw.text((80, 200), content,color, font) # 设置水印位置
        image.save(savefilepath)
    
    
    
    
    # 横向中间水印
    def auto_make_watermark2(filepath,content,color,savefilepath):
        """
        :param filepath: 图片路径
        :param content: 水印文字
        :param color: 水印颜色
        :param savefilepath: 保存路径
        :return:
        """
        image = Image.open(filepath).convert('RGB')
        draw = ImageDraw.Draw(image)
        font=ImageFont.truetype("simsun.ttc", 40, encoding="unic",index=1)  # 设置水印字体
        draw.text((80, 400), content,color, font)   # 设置水印位置
        image.save(savefilepath)
    
    
    
    
    # 横向最下方水印
    def auto_make_watermark3(filepath,content,color,savefilepath):
        """
        :param filepath: 图片路径
        :param content: 水印文字
        :param color: 水印颜色
        :param savefilepath: 保存路径
        :return:
        """
        image = Image.open(filepath).convert('RGB')
        draw = ImageDraw.Draw(image)
        font=ImageFont.truetype("simsun.ttc", 40, encoding="unic",index=1)  # 设置字体
        draw.text((80,image.size[1]-150), content,color, font) # 设置水印位置
        image.save(savefilepath)
    
    
    
    
    # 横向中间倾斜水印45度
    def auto_make_watermark4(filepath,content,color,savefilepath,radio):
        """
        :param filepath: 图片路径
        :param content: 水印文字
        :param color: 水印颜色
        :param savefilepath: 保存路径
        :param radio: 水印倾斜角度
        :return:
        """
        im = Image.open(filepath)
        watermark = Image.new('RGBA', im.size)
        draw = ImageDraw.Draw(watermark, 'RGBA')
        font = ImageFont.truetype("simsun.ttc", 40, encoding="unic", index=1)
        # x y 坐标
        draw.text((80, 400), content, font=font,  fill=color)
        # 旋转45度
        watermark = watermark.rotate(radio, Image.BICUBIC)
        # 透明的
        alpha = watermark.split()[3]
        alpha = ImageEnhance.Brightness(alpha).enhance(0.7)
        watermark.putalpha(alpha)
        # 合成新的图片
        image2 = Image.composite(watermark, im, watermark)
        image2.save(savefilepath)
    
    
    
    
    
    if __name__ == '__main__':
        time1=time.time()
        filepath=r'F:/img_spam/python添加水印/10064003738101263000320010013284.jpg'
    
        savefilepath='F:/img_spam/python添加水印/生成/'
        text="诚招发单人,vx:18668124728"
        colors=['red','green','black']
    
        for color in colors:
            auto_make_watermark1(filepath,text,color,savefilepath+'10064003738101263000320010013285'+'_'+color+'_'+'top'+'.jpg')
            auto_make_watermark2(filepath, text, color,savefilepath + '10064003738101263000320010013285' + '_' + color+'_' +'mmddle'+'.jpg')
            auto_make_watermark3(filepath, text, color,savefilepath + '10064003738101263000320010013285' + '_' + color +'_'+ 'down' + '.jpg')
            auto_make_watermark4(filepath, text, color,savefilepath + '10064003738101263000320010013285' + '_' + color+'_' + 'angle' + '.png',45)
            auto_make_watermark4(filepath, text, color,savefilepath + '10064003738101263000320010013285' + '_' + color + '_' +'angle_50' + '.png', -50)
    
        time2=time.time()
        print('总共耗时:' + str(time2 - time1) + 's')
    
    
    

    在这里插入图片描述

    展开全文
  • PS制作水印图片

    万次阅读 2019-06-18 09:37:43
    首先我们先来了解一下水印是什么先,根据上网的查阅知道水印其实是指的是在图片上加的防止他人盗图的半透明logo、图标、文字版权或者是网址。 水印也分为原创水印和伪原创水印: 原创水印为原图片中模特本人或者摄影...

    (作者:邱锡纶 撰写时间:2019年6月17日 星期一)
    首先我们先来了解一下水印是什么先,根据上网的查阅知道水印其实是指的是在图片上加的防止他人盗图的半透明logo、图标、文字版权或者是网址。
    水印也分为原创水印和伪原创水印:
    原创水印为原图片中模特本人或者摄影师、网站管理12做的版权;伪原创为其它网站、论坛收集到这些图片后加上自己网站的LOGO网址等水印信息。
    在图片上印上水印属于版权保护行为,防止他人盗取利用。
    通过了解之后大概知道了图片中水印的作用了,下面我们就来讲一下它的制作方法吧!
    第一步:首先我们新建一个空白图层/画板(我建立的是以300PX、300PX的透明的背景),再在里面打上想要的水印字体,或者图标等等,图中我以“莫挨老子”为例
    在这里插入图片描述
    把文字打好之后再随意的调整一下它的位置(也可以像上图这样,因为这是比较常见的一种水印类型排式)。
    第二步:好了之后我们就对它进行一下保存,编辑-定义图案、并且打上它的名字,以防忘记。
    在这里插入图片描述
    在这里插入图片描述
    第三步:接着我们就可以把我们想要添加水印的图片导进PS了,首先我们给它Ctrl+J复制一份先,接着双击我们的图层,从而促使图层样式点击出来,在其中找到我们的图案叠加模块,并且在其中找到我们刚才保存的水印样式,进行选择,
    在这里插入图片描述
    第四步:我们可以把透明度减低一点(更好的体现水印效果),缩放即可随意的根据自己的爱好进行调整即可。
    在这里插入图片描述
    调好之后我们的一个水印效果图片就已经制做好了,步骤其实非常简单。在这里插入图片描述

    展开全文
  • 主要为大家详细介绍了PHP缩略图生成和图片水印制作过程,php实现水印添加与缩略图生成的相关步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 这里,跟大家分享的简易图片水印制作工具是一款简单免费的水印生成工具,该软件可以使你不用进行安装即可免费生成图片水印!而且可以进行水印透明度控制和进行水印拖拽,不会对图片造成任何失真效果。
  • TSR Watermark Image Pro是一款非常强劲实用的图片水印的软件,使用简单水印不易去除,如果大家还不知道什么软件制作水印比较好的话,威航软件园建议大家试试TSR Watermark Image Pro吧。
  • 这 篇教程教大家利用一般处理程序(Handler)制作图片水印,这种水印的优点是一经修改全站适用,而且不改变原来的图片。 制作水印分为两种方法,一种是利用局部Handler,给指定路径的图片添加水印;另一种是利用...
  • 大家好给大家带来一款图片水印的微信小程序源码 该小程序拥有多种水印的添加方式 比如: 全屏水印(也就是整张图片都给加上水印透明度可以自行调整) 隐形水印(该水印是肉眼不可见但是通过PS等软件就可以看得到...
  • Easy Watermark制作图片电影的水印,简单易学,很容易上手!
  • java 制作图片水印

    2012-04-12 22:58:29
    * 打印文字水印图片 * * @param pressText * --文字 * @param targetImg -- * 目标图片 * @param fontName -- * 字体名 * @param fontStyle -- * 字体样式 * @param color -- * ...
  • 使用PHP制作图片水印

    2017-06-05 22:49:35
     * 图片水印  * @param string $desImg 想要打水印的大图  * @param string $waterImg 作为水印的小图  * @param string $dir 打完水印的图片保存的目录  * @param int $x 水印在大图中x坐标位置  * @...
  • 为图片添加水印也是图片处理中...如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分。该函数的原型如下所示: 复制代码 代码如下: bool imagecopy(resource dst_im,resource src_im,int
  • 何保护您发布在网上的图片?给图片加上一个自己独特的标识是一个不错的办法。不用打开庞大缓慢的Photoshop,试试PhotoMark吧!PhotoMark 是一款专门给图象加水印功能的工具,可以快速,准确,方便的添加您的独特标识...
  • Bulk Photo Watermark Mac是一款操作十分简单的图片批量添加水印工具,用户只需一键拖拽就能够轻松添加水印,且该工具还支持图片、文字、二维码等数据,非常的实用。 Bulk Photo Watermark安装教程 安装包下载完成...
  • 图片去水印工具

    2018-07-15 16:25:11
    简单去水印工具,快速无广告无毒。收藏多年精品资源。
  • NULL 博文链接:https://i18n.iteye.com/blog/410240
  • 下面我就将介绍一下怎么给图片添加水印图片的拼接,怎么制作个性名片以及制作一个涂鸦的画板。   水印 水印的添加总的来说可以简单的分为三步来走,第一步先完成一个画布的创建,第二步在画板上画出你想添加水印...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,819
精华内容 3,527
关键字:

如何制作图片水印