所需图片文件打包下载:
代码片段:
#NoEnv
SetBatchLines -1
#SingleInstance Force
#Include <Gdip>
;---------------------------
; 如初
; 2021/4/21
;
; 每日健康打卡需要提供>4500步的微信步数截图
; (为了没时间出去溜达的时候也能一样地打卡)
;--------------------------
if !pToken := Gdip_Startup() {
MsgBox, 48, gdiplus error!, Gdiplus启动失败!请确保系统装有gdiplus
ExitApp
}
pics := [9,9,9,9] ; 数字是哪些(只能4位数字)
; 数字所在背景图片的x,y像素坐标
; Sx和Sy可以通过用画图打开背景图片来寻找坐标
Sx := 206
Sy := 1617
MsgBox 0x40, 提示, 背景图片一定要用当天的截图`n(只会覆盖步数区域的图像)
BackgroundPic := "背景.jpg" ;背景图片文件名
pBitmapAndG:=生成数字图片(pics)
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy)
Gdip_Shutdown(pToken) ; 关闭Gdip
ExitApp
return
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy){
; 读取背景
pBitmapBG := Gdip_CreateBitmapFromFile(BackgroundPic)
; 获取背景的宽度和高度
Width := Gdip_GetImageWidth(pBitmapBG), Height := Gdip_GetImageHeight(pBitmapBG)
; 获取数字图片宽度和高度
Width_ := Gdip_GetImageWidth(pBitmapAndG[1]), Height_ := Gdip_GetImageHeight(pBitmapAndG[1])
pBitmap := Gdip_CreateBitmap(Width, Height)
G := Gdip_GraphicsFromImage(pBitmap)
Gdip_DrawImage(G, pBitmapBG, 0, 0, Width, Height) ; 绘制背景
Gdip_DrawImage(G, pBitmapAndG[1], Sx, Sy, Width_, Height_) ; 直接把图片全部画上去
;保存到文件
Gdip_SaveBitmapToFile(pBitmap, "输出文件.png")
;丢弃位图
Gdip_DisposeImage(pBitmap)
Gdip_DisposeImage(pBitmapBG)
Gdip_DisposeImage(pBitmapAndG)
;丢弃指针
Gdip_DeleteGraphics(G)
Gdip_DeleteGraphics(pBitmapAndG[2])
}
生成数字图片(pics){ ;生成数字图片 pics是数字组成的数组
; 单个数字图片是35*50
; 创建一个指定像素宽*高的gdi +位图(这是我们必须使用的整个绘图区域)
pBitmap := Gdip_CreateBitmap(pics.Length() * 36, 50) ;留出数字间36-35=1的间隙
; 获取指向位图图形的指针G
G := Gdip_GraphicsFromImage(pBitmap)
;填充背景颜色
; 创建一个白色画笔(将用于用白色填充背景)。笔刷完全不透明(ARGB)
pBrush := Gdip_BrushCreateSolid(0xffffffff)
; 用白色画笔填充位图的整个图形(这将是背景色)
Gdip_FillRectangle(G, pBrush, 0, 0, pics.Length() * 36, 50)
; 删除为节省内存而创建的笔刷,因为我们不再需要相同的笔刷
Gdip_DeleteBrush(pBrush)
;填充结束
; 读取要用的数字图片并进行画图
for n,Name in pics {
x:=36*(n-1)
y=0
pBitmapFile:= Gdip_CreateBitmapFromFile(getPicFilePath(Name))
Gdip_DrawImage(G, pBitmapFile, x, y, 35, 50) ;把数字图片全部画上去
Gdip_DisposeImage(pBitmapFile) ;用完的图片丢弃
}
return [pBitmap,G] ;返回画好的位图
}
getPicFilePath(Name){ ;返回数字图片路径
return A_ScriptDir "\number\" Name ".png"
}
#NoEnv
SetBatchLines -1
#SingleInstance Force
#Include <Gdip>
;---------------------------
; 如初
; 2021/4/21
;
; 每日健康打卡需要提供>4500步的微信步数截图
; (为了没时间出去溜达的时候也能一样地打卡)
;--------------------------
if !pToken := Gdip_Startup() {
MsgBox, 48, gdiplus error!, Gdiplus启动失败!请确保系统装有gdiplus
ExitApp
}
pics := [9,9,9,9] ; 数字是哪些(只能4位数字)
; 数字所在背景图片的x,y像素坐标
; Sx和Sy可以通过用画图打开背景图片来寻找坐标
Sx := 206
Sy := 1617
MsgBox 0x40, 提示, 背景图片一定要用当天的截图`n(只会覆盖步数区域的图像)
BackgroundPic := "背景.jpg" ;背景图片文件名
pBitmapAndG:=生成数字图片(pics)
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy)
Gdip_Shutdown(pToken) ; 关闭Gdip
ExitApp
return
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy){
; 读取背景
pBitmapBG := Gdip_CreateBitmapFromFile(BackgroundPic)
; 获取背景的宽度和高度
Width := Gdip_GetImageWidth(pBitmapBG), Height := Gdip_GetImageHeight(pBitmapBG)
; 获取数字图片宽度和高度
Width_ := Gdip_GetImageWidth(pBitmapAndG[1]), Height_ := Gdip_GetImageHeight(pBitmapAndG[1])
pBitmap := Gdip_CreateBitmap(Width, Height)
G := Gdip_GraphicsFromImage(pBitmap)
Gdip_DrawImage(G, pBitmapBG, 0, 0, Width, Height) ; 绘制背景
Gdip_DrawImage(G, pBitmapAndG[1], Sx, Sy, Width_, Height_) ; 直接把图片全部画上去
;保存到文件
Gdip_SaveBitmapToFile(pBitmap, "输出文件.png")
;丢弃位图
Gdip_DisposeImage(pBitmap)
Gdip_DisposeImage(pBitmapBG)
Gdip_DisposeImage(pBitmapAndG)
;丢弃指针
Gdip_DeleteGraphics(G)
Gdip_DeleteGraphics(pBitmapAndG[2])
}
生成数字图片(pics){ ;生成数字图片 pics是数字组成的数组
; 单个数字图片是35*50
; 创建一个指定像素宽*高的gdi +位图(这是我们必须使用的整个绘图区域)
pBitmap := Gdip_CreateBitmap(pics.Length() * 36, 50) ;留出数字间36-35=1的间隙
; 获取指向位图图形的指针G
G := Gdip_GraphicsFromImage(pBitmap)
;填充背景颜色
; 创建一个白色画笔(将用于用白色填充背景)。笔刷完全不透明(ARGB)
pBrush := Gdip_BrushCreateSolid(0xffffffff)
; 用白色画笔填充位图的整个图形(这将是背景色)
Gdip_FillRectangle(G, pBrush, 0, 0, pics.Length() * 36, 50)
; 删除为节省内存而创建的笔刷,因为我们不再需要相同的笔刷
Gdip_DeleteBrush(pBrush)
;填充结束
; 读取要用的数字图片并进行画图
for n,Name in pics {
x:=36*(n-1)
y=0
pBitmapFile:= Gdip_CreateBitmapFromFile(getPicFilePath(Name))
Gdip_DrawImage(G, pBitmapFile, x, y, 35, 50) ;把数字图片全部画上去
Gdip_DisposeImage(pBitmapFile) ;用完的图片丢弃
}
return [pBitmap,G] ;返回画好的位图
}
getPicFilePath(Name){ ;返回数字图片路径
return A_ScriptDir "\number\" Name ".png"
}
#NoEnv
SetBatchLines -1
#SingleInstance Force
#Include <Gdip>
;---------------------------
; 如初
; 2021/4/21
;
; 每日健康打卡需要提供>4500步的微信步数截图
; (为了没时间出去溜达的时候也能一样地打卡)
;--------------------------
if !pToken := Gdip_Startup() {
MsgBox, 48, gdiplus error!, Gdiplus启动失败!请确保系统装有gdiplus
ExitApp
}
pics := [9,9,9,9] ; 数字是哪些(只能4位数字)
; 数字所在背景图片的x,y像素坐标
; Sx和Sy可以通过用画图打开背景图片来寻找坐标
Sx := 206
Sy := 1617
MsgBox 0x40, 提示, 背景图片一定要用当天的截图`n(只会覆盖步数区域的图像)
BackgroundPic := "背景.jpg" ;背景图片文件名
pBitmapAndG:=生成数字图片(pics)
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy)
Gdip_Shutdown(pToken) ; 关闭Gdip
ExitApp
return
插入数字图片并保存(BackgroundPic, pBitmapAndG, Sx, Sy){
; 读取背景
pBitmapBG := Gdip_CreateBitmapFromFile(BackgroundPic)
; 获取背景的宽度和高度
Width := Gdip_GetImageWidth(pBitmapBG), Height := Gdip_GetImageHeight(pBitmapBG)
; 获取数字图片宽度和高度
Width_ := Gdip_GetImageWidth(pBitmapAndG[1]), Height_ := Gdip_GetImageHeight(pBitmapAndG[1])
pBitmap := Gdip_CreateBitmap(Width, Height)
G := Gdip_GraphicsFromImage(pBitmap)
Gdip_DrawImage(G, pBitmapBG, 0, 0, Width, Height) ; 绘制背景
Gdip_DrawImage(G, pBitmapAndG[1], Sx, Sy, Width_, Height_) ; 直接把图片全部画上去
;保存到文件
Gdip_SaveBitmapToFile(pBitmap, "输出文件.png")
;丢弃位图
Gdip_DisposeImage(pBitmap)
Gdip_DisposeImage(pBitmapBG)
Gdip_DisposeImage(pBitmapAndG)
;丢弃指针
Gdip_DeleteGraphics(G)
Gdip_DeleteGraphics(pBitmapAndG[2])
}
生成数字图片(pics){ ;生成数字图片 pics是数字组成的数组
; 单个数字图片是35*50
; 创建一个指定像素宽*高的gdi +位图(这是我们必须使用的整个绘图区域)
pBitmap := Gdip_CreateBitmap(pics.Length() * 36, 50) ;留出数字间36-35=1的间隙
; 获取指向位图图形的指针G
G := Gdip_GraphicsFromImage(pBitmap)
;填充背景颜色
; 创建一个白色画笔(将用于用白色填充背景)。笔刷完全不透明(ARGB)
pBrush := Gdip_BrushCreateSolid(0xffffffff)
; 用白色画笔填充位图的整个图形(这将是背景色)
Gdip_FillRectangle(G, pBrush, 0, 0, pics.Length() * 36, 50)
; 删除为节省内存而创建的笔刷,因为我们不再需要相同的笔刷
Gdip_DeleteBrush(pBrush)
;填充结束
; 读取要用的数字图片并进行画图
for n,Name in pics {
x:=36*(n-1)
y=0
pBitmapFile:= Gdip_CreateBitmapFromFile(getPicFilePath(Name))
Gdip_DrawImage(G, pBitmapFile, x, y, 35, 50) ;把数字图片全部画上去
Gdip_DisposeImage(pBitmapFile) ;用完的图片丢弃
}
return [pBitmap,G] ;返回画好的位图
}
getPicFilePath(Name){ ;返回数字图片路径
return A_ScriptDir "\number\" Name ".png"
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)