Untiy添加水印并保存(包含文字转图片并打水印)
添加水印代码:
/// <summary>/// 添加水印/// </summary>/// <param name="background">背景图</param>/// <param name="watermark">水印</param>/// <param name="foffsetX">x偏移量</param>/// <param name="offsetY">y偏移量</param>/// <returns>结果图</returns>private Texture2D AddWatermark(Texture2D background, Texture2D watermark,int foffsetX,int offsetY){int startX = background.width - watermark.width - foffsetX;int endX = startX + watermark.width;int startY = offsetY;int endY = startY + watermark.height;for (int x = startX; x < endX; x++){for (int y = startY; y < endY; y++){Color bgColor = background.GetPixel(x, y);Color wmColor = watermark.GetPixel(x - startX, y - startY);Color final_color = Color.Lerp(bgColor, wmColor, wmColor.a / 1.0f);background.SetPixel(x, y, final_color);}}background.Apply();return background;}
下面是将文字转为图片(需在工程中添加System.Drawing.dll),此处本打算将bitmap作为贴图在图片上打水印,单实际结果出现背景,应该是非png造成,又不知道如何将字体直接转为png,所以就曲线救国,将bitmap存储到本地为png图片,然后获取到该透明图片并打水印:
/// <summary>/// 文字转图片/// </summary>/// <param name="text">文字内容</param>/// <param name="fontSize">字体大小</param>/// <param name="paddingLeft">左边距</param>/// <param name="paddingTop">上边距</param>/// <param name="textColor">字体颜色</param>private Texture2D TextToPicture(string text, float fontSize, int paddingLeft, int paddingTop, System.Drawing.Color textColor){System.Drawing.Font textFont = new System.Drawing.Font("宋体", fontSize);System.Drawing.Bitmap bm = new System.Drawing.Bitmap((int)(text.Length * (fontSize + 40)), (int)(fontSize + 40));System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);System.Drawing.Brush b = new System.Drawing.SolidBrush(textColor);g.DrawString(text, textFont, b, paddingLeft, paddingTop);bm.Save(dirPath + "/UserName.png", System.Drawing.Imaging.ImageFormat.Png);Texture2D tex = GetPicture(dirPath + "/UserName.png");File.Delete(dirPath + "/UserName.png");g.Dispose();bm.Dispose();return tex;}
加载图片代码:
/// <summary>/// 文件流加载图片/// </summary>/// <param name="path">路径</param>private Texture2D GetPicture(string path){DirectoryInfo dir = new DirectoryInfo(dirPath);FileStream fs = new FileStream(path, FileMode.Open);byte[] buffer = new byte[fs.Length];fs.Read(buffer, 0, buffer.Length);fs.Close();Texture2D tex = new Texture2D(2, 2);tex.LoadImage(buffer);tex.Apply();return tex;}
保存图片的话,需要协程,等到图片绘制结束,再保存(此处为保存RenderTexture的代码):
/// <summary>/// 将RenderTexture转为JPG,并保存到文件夹/// </summary>/// <param name="rt">RenderTexture</param>/// <param name="jpgName">图片名</param>public IEnumerator SaveRenderTextureToJPG(RenderTexture rt, string jpgName){RenderTexture prev = RenderTexture.active;RenderTexture.active = rt;Texture2D jpg = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);jpg.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);jpg = AddWatermark(jpg, watermark, 10, 10);//加图片水印jpg = AddWatermark(jpg, TextToPicture("末零", 20, 20, 20, System.Drawing.Color.Black), watermark.width - 30, 30);//加文字水印yield return new WaitForEndOfFrame();byte[] bytes = jpg.EncodeToJPG();FileStream file = File.Open(dirPath + "/" + jpgName + ".jpg", FileMode.Create);BinaryWriter writer = new BinaryWriter(file);writer.Write(bytes);file.Close();DestroyImmediate(jpg);jpg = null;RenderTexture.active = prev;}
Untiy添加水印并保存(包含文字转图片并打水印)相关推荐
- 创建富文本(文本可以包含文字,图片,自定义节点),c++,cocos2dx
C++: 创建富文本(文本可以包含文字,图片,自定义节点) 这里测试富文本控件 ui::RichText* _richText = ui::RichText::create(); _richText- ...
- python批量添加水印_python 给目录下的图片批量加水印
python 给目录下的图片批量加水印 water.py 放到 图片文件夹里 然后cd 到当前文件夹 python water.py #coding=utf-8 import Image import ...
- 使用canvas绘制海报,包含文字、图片、base64图片
这里写目录标题 步骤 1. 创建画布 2. 画图片 3. 画文字 4. 画base64图片 保存 完整代码 js vue 这里介绍使用js(jQuery)或者vue使用画布绘制海报,小程序uniapp ...
- 文字转图片,文字水印图片,合成图片,教你 Python 生成网站原创配图!
又是为站佬们服务(写)水文的一篇,如何应用python来生成或者说是合成自己的原创图片,适合各位站群大佬哥们生成自己的图片,避免没有配图或者侵权碰瓷的尴尬,当然本渣渣这里分享的仅仅是源码demo,后续 ...
- android动态生成背景透明带文字的图片
生成的图片背景一直是黑色,几经查找资料发现,若要使背景为透明,必须设置为Config.ARGB_4444,或者Config.ARGB_8888, 而不是Bitmap.Config.RGB_565 ...
- 【记录】pdf添加水印(文字、图片水印)
先上效果图 由于透明度设置的比较低,可能看不太清右上角的是文字和图片的水印,图片打码了. 该实现中有word转pdf的方法,如有需要请移步另一个word转pdf的帖子,小白一个写的比较冗余哈. pom ...
- acrobat给pdf加多行水印_批量pdf如何添加水印 多个pdf批量加相同水印的方法|支持同时添加文字、图片水印...
本次还是给大家讲讲pdf文件的编辑转换处理,毕竟pdf文件也是在办公学习上是很常用到的,工作时很经常会遇到多个pdf文件要处理的情况,比如说制作好了一系列的pdf文档,需要上传到网络或者传输给他人查阅 ...
- python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;
python使用fpdf生成发票格式的pdf文件包含:文字.图片logo.表格.条形码等: pip install fpdf #python使用fpdf生成发票格式的pdf文件包含:文字.图片logo ...
- c html保存为图片格式,【单选题】在 IE 中,若要把整个网页的文字和图片一起保存在一个文件中,则文件的类型应为 。
A. HTM B. HTML C. MHT D. TXT...
[单选题]在 IE 中,若要把整个网页的文字和图片一起保存在一个文件中,则文件的类型应为 . A. HTM B. HTML C. MHT D. TXT 更多相关问题 不属于肺主治节范畴的是()A.主持 ...
最新文章
- Struts2学习小结
- 用js自动把url加入ubb代码的函数
- 支付和LBS定位对于O2O到底有多重要?
- 在上位计算机控制时不能将s7-200,plc控制系统编程题库.doc
- 工作一年后,我有些感悟(写于2017年)
- 用ntdsutil命令中的restore object 更新版本号
- 攻防世界-Web_php_include
- 《Windows脚本应用详解》已经出版
- LeetCode数据库 176. 第二高的薪水
- Java中Double保留后小数位的几种方法
- byte数组存的是什么_字节跳动为什么有字节2个字,因为程序的真谛:字节
- 北上广深杭程序员买房姿势图鉴
- 给我一个BigGAN,我就能开一家美术作品店,一幅画卖200美元
- 拓端tecdat|python3用ARIMA模型进行时间序列预测
- 如何选择jquery版本
- 如何清除谷歌浏览器中的counterflix广告病毒
- 机器学习之【蒙特卡罗法】
- 人类有两大学习能力,即记忆力和理解力
- 【215期推荐】另类思考:HIS能给医院带来什么“坏处”?
- ZYNQ sd卡启动失败,mmc0: error -84 whilst initialising SD card, SD卡只读,mmcblk0: mmc0:0001 SD 8 GiB (ro)
热门文章
- Tableau笔记(10)转置和拆分
- 解决Couldn‘t determine repo type for URL
- TPH-YOLOv5简述
- doc文档转docx格式,方便对文件进行批量处理【附代码】
- docker默认ip地址修改
- cpu计算机词汇中文意思是,CPU计算机口译词汇中英文对照1
- 闲谈 bypass AV
- (大白话版)子网划分、进制换算
- 【LDU】 Week2自测 Disney‘s FastPass | 状压dp、Floyd
- 万能手机usb内窥镜软件下载_万能证件生成器手机版-万能证件生成器手机版下载 v1.0 免费版...