jquery 如何设置图片水印文字倾斜?

易途 2020-12-01 07:50:34
在网上找了个图片添加文字水印的案列,现在我想把文字水印添加到图片的中间或者右下倾斜,望大神解答。希望把代码写出来,写在哪里需要注意什么!谢谢




// html img
<img class="sample2" data-img2blob="../../img/nan/m103.941.11/M103 (1).jpg" alt="">

// 页面JS
<script src="../../js/jquery-1.12.4.min.js" type="text/javascript"></script>
<script src="../../js/img2blob.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
// default
$(".sample1").img2blob();

// with watermark
$(".sample2").img2blob({
watermark: '水印 水印 水印',
fontStyle: 'Microsoft YaHei,Arial',
fontSize: '45', // px
fontColor: 'yellow', // default 'black'
font: 40, // The x coordinate where to start painting the text
fontY: 60, // The y coordinate where to start painting the text
});

});
</script>

// img2blob.js

$.fn.img2blob = function(a) {
var b = {
watermark: '',
fontStyle: 'Arial',
fontSize: '30',
fontColor: 'black',
fontX: 10,
fontY: 50,
};
if (typeof a === 'object') {
a.watermark = (a.watermark == undefined ? b.watermark : a.watermark);
a.fontStyle = (a.fontStyle == undefined ? b.fontStyle : a.fontStyle);
a.fontSize = (a.fontSize == undefined ? b.fontSize : a.fontSize);
a.fontColor = (a.fontColor == undefined ? b.fontColor : a.fontColor);
a.fontX = (a.fontX == undefined ? b.fontX : a.fontX);
a.fontY = (a.fontY == undefined ? b.fontY : a.fontY);
} else {
a = b;
}

$(this).each(function(i, c) {
var d = $(this).data('img2blob'),
e = '.' + $(this).attr('class'),
f = new Image();
f.onload = function() {
var g = document.createElement('canvas');
g.width = f.naturalWidth;
g.height = f.naturalHeight;
var h = g.getContext('2d');
h.drawImage(f, 0, 0);
if(a.watermark != ''){
h.font = a.fontSize + 'px ' + a.fontStyle;
h.fillStyle = a.fontColor;
h.fillText(a.watermark, a.fontX, a.fontY);
}
var j = g.toDataURL('image/png'),
k = DataUriToBinary(j),
l = new Blob([k], {
type: 'image/png'
}),
m = window.URL.createObjectURL(l);
$(e).eq(i).attr('src', m);
};
f.src = d;
});

function DataUriToBinary(n) {
var o = ';base64,',
p = n.indexOf(o) + o.length,
q = n.substring(p),
r = window.atob(q),
s = r.length,
t = new Uint8Array(new ArrayBuffer(s));
for (i = 0; i < s; i++) {
t[i] = r.charCodeAt(i);
}
return t;
}

}
代码出处 https://hovertree.com/h/bjag/kfq30wnj.htm
...全文
1551 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2020-12-02
  • 打赏
  • 举报
回复
引用 2 楼 易途 的回复:
代码改好了,但是 急急急啊 突然发现不兼容火狐,360,搜狗等,只能在谷歌、IE11 ,怎么办啊???
360,搜狗不知道,从来不用。 但FF支持的呀,IE应该从10开始都支持呀 自己看日志打印是哪个错了,要是因为原生的atob方法不支持,自己去找个替代方法
易途 2020-12-02
  • 打赏
  • 举报
回复
代码改好了,但是 急急急啊 突然发现不兼容火狐,360,搜狗等,只能在谷歌、IE11 ,怎么办啊???
易途 2020-12-02
  • 打赏
  • 举报
回复
问题已解决 谢谢。
泡泡鱼_ 2020-12-02
  • 打赏
  • 举报
回复
将:

h.fillText(a.watermark, a.fontX, a.fontY);
修改为:

h.translate(g.width - a.watermark.length * a.fontSize, g.height - a.fontSize);
h.rotate(-Math.PI / 4);
h.fillText(a.watermark, a.fontX, a.fontY);
如果倾斜需求需要动态设置,可仿照着给参数加多一个isRotate属性来确定是否启用;按上面修改过后,原参数fontX,fontY即转为了对倾斜文字的位置的微调
内容概要:本文提出了一种基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法,并提供了完整的Python代码实现。该方法针对高海拔地区风能、光伏等新能源出力波动剧烈、不确定性高的特点,通过优化扩散模型的结构与训练策略,有效捕捉历史数据的概率分布特征与时序相关性,从而生成高质量、多样化的出力场景。文中详细阐述了模型的数学推导、网络架构设计、损失函数优化及采样算法改进,并通过实验证明其在拟合精度、场景多样性与稳定性方面优于传统生成模型,为电力系统在高比例新能源接入下的规划、调度与风险评估提供了可靠的场景输入支持。; 适合人群:具备一定Python编程能力和机器学习基础,从事新能源发电预测、电力系统分析、智能优化、场景生成等方向研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①用于高海拔地区风电、光伏出力的不确定性建模与多场景生成;②支撑含高渗透率新能源的电力系统随机优化调度、鲁棒决策与风险评估;③为相关学术研究、论文复现与算法改进提供可运行的技术方案与代码基础; 阅读建议:建议读者结合所提供的完整资源(代码、数据集、说明文档)进行实践操作,重点关注扩散模型的前向加噪与反向去噪过程的设计细节,以及如何将其适配于新能源时序数据的生成任务,通过参数调优与对比实验深入理解模型的生成机制与性能边界。

87,988

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧