为图片添加斜体水印并保存水印图片

最近遇到个需求,使用手机扫码签名,手机的签名画板需要支持添加平铺的斜体文字水印,然后保存的签名图片也需要水印,这里是分享下如何给图片加斜体水印,先将图片放入到canvas画布中,利用canvas的绘制功能为图片添加斜体的文字水印,然后将整个canvas转成图片保存。

function addWatermark(image, text) { 
	  // 获取画布元素,并设置其宽高和图片一样  
	  var canvas = document.getElementById("myCanvas"); 
	  canvas.width = image.width; 
	  canvas.height = image.height; 
	  // 坐标(0,0) 表示从此处开始绘制,相当于偏移。 
	  canvas.getContext("2d").drawImage(image, 0, 0);  
	 //绘制斜体水印到canvas上,添加8行8列
	 for (var i =0; i < 8; i++) {
	 	for (var j=0; j< 8; j++) {
	 		//设置文字的水平偏转角度
			canvas.rotate((45 * Math.PI) / 180);
			//设置文字的字体
			canvas.font = "18px microsoft yahei";
			//设置字体颜色
			canvas.fillStyle = "#DBDBDB";
			//填充水印,(水印文字, X轴偏移距离, Y轴偏移距离)
			canvas.fillText(text, i * 200, -200 + (j * 100));
			//由于是循环加,所以要把角度给偏转回来,要不然会从此角度开始一直转
			canvas.rotate((-45 * Math.PI) / 180);
		}
	 }
}

function submit() {
	var canvas = document.getElementById("myCanvas");
	//转换返回的是一串Base64编码的URL
	var image = canvas.toDataURL("image/png");
	//替换转义符号,然后传到后台使用byte[] b = Base64.decodeBase64(imageParam);
	var imageParam = image.replace(/^data:image\/(png|jpg);base64,/,"");
	........
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
删除PDF文件中的斜体水印需要使用PDFBox库来解析PDF文件并处理水印。以下是Java代码示例: ```java import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState; import org.apache.pdfbox.pdmodel.graphics.state.PDGraphicsState; import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode; public class RemoveItalicWatermark { public static void main(String[] args) throws IOException { // Load PDF document File pdfFile = new File("input.pdf"); PDDocument document = PDDocument.load(pdfFile); // Iterate over each page for (PDPage page : document.getPages()) { PDGraphicsState graphicsState = page.getGraphicsState(); PDExtendedGraphicsState extendedGraphicsState = graphicsState.getNonStrokingAlphaConstant(); RenderingMode renderingMode = graphicsState.getTextState().getRenderingMode(); // Check if page has italic watermark if (extendedGraphicsState != null && extendedGraphicsState.getStrokingAlphaConstant() == 0 && renderingMode == RenderingMode.FILL_STROKE_TEXT && graphicsState.getTextState().getFont().isItalic()) { // Remove watermark by resizing page and redrawing content PDRectangle mediaBox = page.getMediaBox(); float x = mediaBox.getLowerLeftX(); float y = mediaBox.getLowerLeftY(); float width = mediaBox.getWidth(); float height = mediaBox.getHeight(); page.setMediaBox(new PDRectangle(x, y, width + 1, height + 1)); page.setCropBox(mediaBox); page.getResources().getCachedFonts().clear(); page.getResources().getFonts().clear(); page.getResources().getXObjects().clear(); page.getResources().getShadings().clear(); page.getResources().getExtGStateNames().clear(); page.getResources().getColorSpaceNames().clear(); page.getResources().getPatternNames().clear(); page.getResources().getProperties().clear(); page.getResources().getProcSet().clear(); page.getResources().getProperties().clear(); page.getResources().getShadingNames().clear(); page.getContents().clear(); } } // Save modified document document.save("output.pdf"); document.close(); } } ``` 这段代码会遍历PDF文件中的每一页,检查是否有斜体水印。如果有,它会通过重新设置页面大小和清除页面内容来删除水印。最后,它会将修改后的文档保存到指定的输出文件中。请注意,这段代码仅适用于PDFBox版本2.0以上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值