开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 130|回复: 8
打印 上一主题 下一主题
收起左侧

[已解决] GDIPlus 给图片加上文字 系统字体都正常 自定义字体闪退

 关闭 [复制链接]
结帖率:100% (1/1)
跳转到指定楼层
楼主
发表于 昨天 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   宁夏回族自治区石嘴山市
10精币
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
文本文本型 
图片字节集 
文本 = “Test测试 加水印文字”
' 使用系统字体(正常)
图片 = GP_图片_加水印_文字 (读入文件 (取运行目录 ()“\原图.jpg”), 文本, “楷体”, , , 50, , #红色, , )
' 使用自定义字体(异常)
' 图片 = GP_图片_加水印_文字 (读入文件 (取运行目录 () + “\原图.jpg”), 文本, , 读入文件 (取运行目录 () + “\Aa剑豪体.ttf”), , 50, , #红色, , )
调试输出 (写到文件 (取运行目录 ()“\加水印后的图片.png”, 图片))


i支持库列表   支持库注释   
spec特殊功能支持库


源码、模块、测试图片、字体(大于5MB放网盘了):字体链接
GDIPlus测试.zip (335.75 KB, 下载次数: 4)

最佳答案

查看完整内容

其实还有一个直折中的解决办法,就是把原版可以正确运行的代码放在一起给编译成模块。 通过调用这个模块,间接的解决了模块冲突的问题。 简单的说,只要是只有原版模块能正确运行的代码,而其它版本模块不能正确运行的,都给放到一个模块里编写。

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (1/1)

签到天数: 10 天

来自 2楼
 楼主| 发表于 昨天 18:57 | 只看该作者   宁夏回族自治区石嘴山市
字体链接:https://share.feijipan.com/s/55HlznVr
回复

使用道具 举报

结帖率:100% (1/1)
板凳
发表于 昨天 18:56 | 只看该作者   浙江省温州市
其实还有一个直折中的解决办法,就是把原版可以正确运行的代码放在一起给编译成模块。
通过调用这个模块,间接的解决了模块冲突的问题。
简单的说,只要是只有原版模块能正确运行的代码,而其它版本模块不能正确运行的,都给放到一个模块里编写。
代码.zip (4.29 MB, 下载次数: 0)

回复

使用道具 举报

结帖率:89% (39/44)

签到天数: 9 天

地板
发表于 昨天 19:07 | 只看该作者   河北省衡水市
检查字体文件是否存在
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
文本文本型 
图片字节集 
字体路径文本型 
字体路径 = 取运行目录 ()“\Aa剑豪体.ttf”
如果 (文件是否存在 (字体路径))
信息框 (“字体文件不存在:” + 字体路径, 0, , )
返回 ()
调试输出 (“字体文件存在,准备加载...”)


i支持库列表   支持库注释   
spec特殊功能支持库



确保字体数据正确加载
  
变量名类 型静态数组备 注
字体数据字节集 
字体数据 = 读入文件 (字体路径)
如果 (取字节集长度 (字体数据) ≤ 0)
信息框 (“字体文件读取失败或为空!”, 0, , )
返回 ()


使用 GP_初始化() 和 GP_关闭()
  
子程序名返回值类型公开备 注
_临时子程序  
GP_初始化 ()  ' 初始化 GDI+
' 你的加水印代码...
GP_关闭 ()    ' 释放 GDI+ 资源



i支持库列表   支持库注释   
gdiplus(未知支持库)


优化自定义字体加载
  
图片 = GP_图片_加水印_文字 (
读入文件 (取运行目录 ()“\原图.jpg”),  ' 原图
文本,                                   ' 水印文字
"",                                    ' 系统字体名称(空表示不使用系统字体)
读入文件 (取运行目录 ()“\Aa剑豪体.ttf”),  ' 自定义字体数据
,                                      ' 字体样式(默认常规)
50,                                    ' 字体大小
,                                      ' 透明度(默认不透明)
#红色,                                 ' 颜色
,                                      ' 对齐方式(默认左上角)
,                                      ' 旋转角度(默认0)
,                                      ' 是否抗锯齿(默认是)
)



完整优化代码
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
文本文本型 
图片字节集 
字体路径文本型 
字体数据字节集 
' 初始化 GDI+
GP_初始化 ()
' 设置水印文字
文本 = “Test测试 加水印文字”
' 检查字体文件是否存在
字体路径 = 取运行目录 ()“\Aa剑豪体.ttf”
如果 (文件是否存在 (字体路径))
信息框 (“字体文件不存在:” + 字体路径, 0, , )
返回 ()
字体数据 = 读入文件 (字体路径)
如果 (取字节集长度 (字体数据) ≤ 0)
信息框 (“字体文件读取失败或为空!”, 0, , )
返回 ()


' 使用自定义字体加水印
图片 = GP_图片_加水印_文字 (
读入文件 (取运行目录 ()“\原图.jpg”),
文本,
"",
字体数据,
,
50,
,
#红色,
,
,
,
)
' 保存图片
调试输出 (写到文件 (取运行目录 ()“\加水印后的图片.png”, 图片))
' 释放 GDI+ 资源
GP_关闭 ()


i支持库列表   支持库注释   
spec特殊功能支持库
gdiplus(未知支持库)


回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

地下
 楼主| 发表于 昨天 19:13 | 只看该作者   宁夏回族自治区石嘴山市
你的猫 发表于 2025-5-9 19:07
检查字体文件是否存在[e=1].版本 2
.支持库 spec

加了初始化也还是一样的,文件都是没有问题
回复

使用道具 举报

结帖率:100% (1/1)
6
发表于 昨天 19:26 | 只看该作者   浙江省温州市
是模块的问题,下面的 例子.zip 里有编译的原版模块,或者你自己编译也行:
给图片的四边都加白边,使用GDI画板,求例子_精易论坛
然后在程序启动时添加上 Gdiplus初始化:
  
子程序名返回值类型公开备 注
_启动子程序整数型 请在本子程序中放置易模块初始化代码
Gdiplus初始化 ()
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 可以根据您的需要返回任意数值


结果就是可以正确生成:

回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

7
 楼主| 发表于 昨天 19:32 | 只看该作者   宁夏回族自治区石嘴山市
zainex 发表于 2025-5-9 19:26
是模块的问题,下面的 例子.zip 里有编译的原版模块,或者你自己编译也行:
给图片的四边都加白边,使用GDI ...

2.4版本的确实可以,这段代码就是从2.4版本扣过来的,我原有的其他功能在现在的版本上,所以只能用这个版本的模块
回复

使用道具 举报

结帖率:100% (1/1)
8
发表于 昨天 19:46 | 只看该作者   浙江省温州市
这个是其他人修改后的闭源模块,不知道是不是乱改,把哪里给改出BUG了。
一般来说,使用者是无法定位这种闭源模块的错误的,即使定位了,你也解决很难解决,非常不建议使用。
非要使用,那你可以把用到这个模块的程序编译给成DLL,通过DLL调用,来解决模块冲突的问题。
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 10 天

9
 楼主| 发表于 昨天 21:43 | 只看该作者   宁夏回族自治区石嘴山市
zainex 发表于 2025-5-9 21:00
其实还有一个直折中的解决办法,就是把原版可以正确运行的代码放在一起给编译成模块。
通过调用这个模块, ...

费心了,我把模块替换成原版,发现所有的函数都运行不了了,基本都返回假,没有好的解决办法,还是得用原版方便找问题,两个都用感觉很冗余
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表