日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

phP imageMagic抠图,使用 Lua + ImageMagick 轻松批量抠图

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 phP imageMagic抠图,使用 Lua + ImageMagick 轻松批量抠图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近準備做一個android手機游戲,但是手頭沒有圖片資源,于是就想著找些現成的拿來先用著。下載了一些apk用壓縮工具解壓出來找到了些比較合適的圖片,但這些圖片大都是把多張小圖拼接到一張大圖里,手動去摳圖不靠譜,于是想到了 ImageMagick,然后再配合靈巧的 Lua 事情就變得簡單多了。

在資源目錄找到了個和大圖配套的.plist配置文件,里面有很多類似這樣的配置:

cursor.png

aliases

spriteColorRect

{{0, 0}, {84, 85}}

spriteOffset

{0, -0}

spriteSize

{84, 85}

spriteSourceSize

{84, 85}

spriteTrimmed

textureRect

{{943, 172}, {84, 85}}

textureRotated

其中 textureRect 中記錄的就是小圖在大圖上的 rect 了,先使用Lua的正則表達式把它們提取出來,然后再利用 ImageMagick 的 convert -crop 命令將大圖上的這塊區域摳出來就可以了。完整的Lua代碼如下:

local plist_file = io.open("imgAll.plist", "r");

local plist_content = plist_file:read("*a");

plist_file:close();

if plist_content then

local images = {};

local pattern = "(.-)(.-)textureRect(.-){{(%d+), (%d+)}, {(%d+), (%d+)}}(.-)";

for key, _, _, x, y, w, h in string.gmatch(plist_content, pattern) do

if not images[key] then

images[key] = {x, y, w, h};

else

print("duplicate key: " .. key);

end

end

for k, v in pairs(images) do

local file_name = string.lower(k);

if string.sub(file_name, -4) ~= ".png" then

file_name = file_name .. ".png";

end

local crop_cmd = string.format([["D:\Program Files\ImageMagick-6.8.5-Q16\convert.exe" imgAll.png -crop %dx%d+%d+%d images\%s]], v[3], v[4], v[1], v[2], file_name);

os.execute(crop_cmd);

end

end 摳出的小圖會被放到images目錄(如果沒有的話需要先手動創建個)。

總結

以上是生活随笔為你收集整理的phP imageMagic抠图,使用 Lua + ImageMagick 轻松批量抠图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。