VFP9利用_GdiPlus类处理图片分辨率及缩放

VFP利用GDI来处理图片,已经不是一件太难的事了。GdiPlus类就是专门来干这事的,有关其属性等请参考其它资料。下面将处理图片缩放及分辨率的代码示例贴出来。这些代码都是很久以前的了,由于新冠宅家无事想起来,便转出来。

Local lcFile_S, lcFile_T, lnW_T, lnH_T, lnXDpi_T, lnYDpi_T

m.lcFile_S = 'D:\Temp\Source.jpg'
m.lcFile_T = 'D:\Temp\Target.jpg'

m.lnW_T = 160       && 目标图宽、高度
m.lnH_T = 240
m.lnXDpi_T = 72     && 目标图分辨率
m.lnYDpi_T = 72

Set Classlib To "_GDIPlus.Vcx" Additive

oGraphics=CreateObject("gpGraphics")      && 创建工作图像

oImage=CreateObject("gpImage")            && 源图
oImage.CreateFromFile(m.lcFile_S)         && 从源图创建
m.lnW = oImage.ImageWidth                 && 宽
m.lnH = oImage.ImageHeight                && 高
m.lnXDpi = oImage.HorizontalResolution    && 水平分辨率
m.lnYDpi = oImage.VerticalResolution      && 垂直分辨率

oBitMap=CreateObject("gpBitMap")          && 目标图
oBitMap.Create(m.lnW_T, m.lnH_T)          && 按目标图大小创建

oGraphics.CreateFromImage(oBitMap)               && 工作图像按目标图建立
oBitMap.SetResolution(m.lnXDpi_T, m.lnYDpi_T)    && 设置目标图分辨率

oGraphics.DrawImageScaled(oImage, 0, 0, m.lnW_T, m.lnH_T)    && 源图按指定矩形区域缩放

m.lnQuality = 90  && 100                  && 图片保存质量
oBitMap.SaveToFile(m.lcFile_T, oImage.GetEncoderCLSID("image/jpeg"), "quality="+Transform(m.lnQuality))    && 按源文件类型保存至目标文件

Release oBitMap    && 释放
Release oImage
Release oGraphics

Release Classlib _GdiPlus

posted @   老瓷  阅读(1282)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· Tinyfox 发生重大改版
点击右上角即可分享
微信分享提示