91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

易語言如何實現提取ICO圖標并支持多種圖像格式轉換功能

發布時間:2021-06-16 16:11:13 來源:億速云 閱讀:1068 作者:小新 欄目:編程語言

這篇文章主要介紹了易語言如何實現提取ICO圖標并支持多種圖像格式轉換功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

DLL命令表

.版本 2
.DLL命令 拷貝內存_BITMAPINFOHEADER, 整數型, "kernel32", "RtlMoveMemory", , RtlMoveMemory
  .參數 目標數據地址, 字節集, 傳址, lpvDest
  .參數 源數據, BITMAPINFOHEADER, 傳址, lpvSource
  .參數 尺寸, 整數型, , 40cbCopy
.DLL命令 拷貝內存_ICONFILEHEADER, 整數型, "kernel32", "RtlMoveMemory", , RtlMoveMemory
  .參數 目標數據地址, 字節集, 傳址, lpvDest
  .參數 源數據, ICONFILEHEADER, , lpvSource
  .參數 尺寸, 整數型, , 22cbCopy

自定義數據類型表

.版本 2
.數據類型 ICONFILEHEADER, , 文件頭22
  .成員 idReserved, 短整數型, , , 為0
  .成員 idType, 短整數型, , , 為1圖標,2為鼠標
  .成員 idCount, 短整數型, , , 文件中圖標個數,為1
  .成員 bWidth, 字節型, , , 寬,為16或32
  .成員 bHeight, 字節型, , , 高,為16或32
  .成員 bColorCount, 字節型, , , 調色盤顏色數量:16或255 或0
  .成員 bReserved, 字節型, , , 為0
  .成員 wPlanes, 短整數型, , , idType為2,鼠標熱點左邊
  .成員 wBitCount, 短整數型, , , 每個像素占的位數 .idType為2,鼠標熱點頂邊
  .成員 dwBytesInRes, 整數型, , , 圖標文件后四項總字節數
  .成員 dwImageOffset, 整數型, , , 圖標文件頭長度,為22
.數據類型 BITMAPINFOHEADER, , 信息頭40
  .成員 biSize, 整數型, , , 信息頭的長度,為40
  .成員 biWidth, 整數型, , , 寬
  .成員 biHeight, 整數型, , , 掃描兩遍,值為實實際高度的2 倍
  .成員 iPlanes, 短整數型, , , 為1
  .成員 biBitCount, 短整數型, , , 每個像素占的位數
  .成員 biCompression, 整數型, , , 為0
  .成員 biSizeImage, 整數型, , , 圖標文件后三項總字節數
  .成員 biXPelsPerMeter, 整數型, , , 為0
  .成員 biYPelsPerMeter, 整數型, , , 為0
  .成員 biClrUsed, 整數型, , , 為0
  .成員 biClrImportant, 整數型, , , 為0
.數據類型 RGBDATA, , 圖像信息中每一個像素包含的RGB
  .成員 B, 字節型
  .成員 R, 字節型
  .成員 G, 字節型
.數據類型 圖像大小
  .成員 寬度, 整數型
  .成員 高度, 整數型

提取ICO圖標

.版本 2
.支持庫 edroptarget
.支持庫 iext2
.支持庫 eAPI
.支持庫 iext5
.支持庫 shell
.支持庫 eImgConverter
.支持庫 BmpOperate
.程序集 窗口程序集1
.程序集變量 程序集_欲刪除的圖標, 文本型
.程序集變量 程序集_文件路徑, 文本型
.程序集變量 程序集_圖像大小, 圖像大小
.子程序 __啟動窗口_創建完畢
拖放對象1.注冊拖放控件 (_啟動窗口.取窗口句柄 ())
檢測圖像欲轉換大小 ()
.子程序 _拖放對象1_得到文件
.參數 接收到的文件路徑, 文本型
編輯框1.內容 = 接收到的文件路徑
.子程序 _按鈕_提取圖標_被單擊
.局部變量 i, 整數型
.局部變量 圖標資源, 字節集
.局部變量 后綴名, 文本型
.局部變量 是否空圖標, 字節集
.局部變量 畫板的底圖, 字節集
.如果真 (尋找文本 (程序集_文件路徑, “.”, , 真) = -1)
  信息框 (“文件路徑不正確,請嘗試更換文件再試!”, #錯誤圖標, )
  返回 ()
.如果真結束
.計次循環首 (取文件內圖標數 (程序集_文件路徑), i)
  提取資源文件圖標 (程序集_文件路徑, 0, 取運行目錄 () + “\” + 到文本 (i) + “.ico”, i)
.計次循環尾 ()
.如果真 (取文件內圖標數 (程序集_文件路徑) ≠ 0)
  氣球提示框1.彈出提示框 (取鼠標水平位置 (), 取鼠標垂直位置 (), “圖標提取成功。”, -1, )
.如果真結束
程序集_欲刪除的圖標 = 編輯框1.內容
' -------上面代碼提取平常的 EXE、DLL、ICL、ICO。圖標 下面的是為了將圖像轉換成為BMP后在轉換ICO圖標----------
后綴名 = 到小寫 (取文本右邊 (程序集_文件路徑, 4))
.如果真 (后綴名 ≠ “.exe” 且 后綴名 ≠ “.dll” 且 后綴名 ≠ “.icl” 且 后綴名 ≠ “.ico”)
  畫板1.底圖 = 讀入文件 (編輯框1.內容)
  畫板的底圖 = 畫板1.底圖
  畫板1.寬度 = 程序集_圖像大小.寬度
  畫板1.高度 = 程序集_圖像大小.高度
  畫板1.底圖方式 = #縮放圖片
  寫到文件 (取特定目錄 (11) + “\” + 取文本右邊 (后綴名, 1), 畫板1.取圖片 (程序集_圖像大小.寬度, 程序集_圖像大小.高度))
  轉換到BMP (取特定目錄 (11) + “\” + 取文本右邊 (后綴名, 1), 取特定目錄 (11) + “\” + 取文本右邊 (后綴名, 1) + “.bmp”)
  程序集_文件路徑 = 取特定目錄 (11) + “\” + 取文本右邊 (后綴名, 1) + “.bmp”
  .如果真 (取文本右邊 (程序集_文件路徑, 4) = “.bmp”)
    BMP轉ICO (讀入文件 (程序集_文件路徑), 圖標資源)
    寫到文件 (取運行目錄 () + “\1.ico”, 圖標資源)
    是否空圖標 = 讀入文件 (取運行目錄 () + “\1.ico”)
    .如果真 (是否空圖標 = { }) ' 如果方法一失敗 自動轉換方法二轉ico
      BMP轉ICO2 (讀入文件 (程序集_文件路徑), 圖標資源)
      寫到文件 (取運行目錄 () + “\1.ico”, 圖標資源)
    .如果真結束
  .如果真結束
  .如果 (畫板的底圖 = { })
    氣球提示框1.彈出提示框 (取鼠標水平位置 (), 取鼠標垂直位置 (), “圖標提取失敗。”, -1, )
  .否則
    氣球提示框1.彈出提示框 (取鼠標水平位置 (), 取鼠標垂直位置 (), “圖標提取成功。”, -1, )
  .如果結束
.如果真結束
畫板1.底圖 = { }
.子程序 _編輯框1_內容被改變
.局部變量 圖標數, 整數型
程序集_文件路徑 = 編輯框1.內容
.如果真 (尋找文本 (程序集_文件路徑, “.lnk”, , 真) ≠ -1)
  編輯框1.內容 = 查詢快捷方式 (程序集_文件路徑)
.如果真結束
圖標數 = 取文件內圖標數 (程序集_文件路徑)
標題 = “發現圖標數為:” + 到文本 (圖標數) + “個”
編輯框1.被選擇字符數 = 取文本長度 (程序集_文件路徑)
.如果真 (圖標數 = 0)
  氣球提示框1.彈出提示框 (取鼠標水平位置 (), 取鼠標垂直位置 (), “文件內沒有發現可用圖標,如果放入的是圖像將自動轉換成為圖標文件” + #換行符 + “如果不是圖像將會轉換失敗!”, -1, 真)
.如果真結束
.子程序 _按鈕_刪除圖標_被單擊
.局部變量 i, 整數型
.如果真 (信息框 (“刪除的僅是剛才提取的圖標而且必須是非圖像提取的圖標”, #是否鈕, ) = #是鈕)
  i = 取文件內圖標數 (程序集_欲刪除的圖標) ' 提取文件圖標按鈕被單擊后 程序集才有會有數據
  .如果真 (i = 0)
    返回 ()
  .如果真結束
  .計次循環首 (取文件內圖標數 (程序集_欲刪除的圖標), i)
    刪除文件 (取運行目錄 () + “\” + 到文本 (i) + “.ico”)
  .計次循環尾 ()
  程序集_欲刪除的圖標 = “”
.如果真結束
.子程序 _按鈕_選擇文件_被單擊
通用對話框1.初始目錄 = 取特定目錄 (3)
通用對話框1.不改變目錄 = 真
通用對話框1.過濾器 = “可執行文件(*.exe)|*.exe|動態鏈接庫(*.dll)|*.dll|圖標資源庫(*.icl)|*.icl|圖像文件(*.bmp;*.jpg;*.jpeg;*.gif;*.ico)|*.bmp;*.jpg;*.jpeg;*.gif;*.ico|所有文件(*.*)|*.*”
.如果真 (通用對話框1.打開 () = 真)
  編輯框1.內容 = 通用對話框1.文件名
.如果真結束
.子程序 BMP轉ICO, 邏輯型, 公開, 用位圖轉換,非本人所寫
.參數 被轉BMP數據, 字節集
.參數 獲得ICO數據, 字節集, 參考
.參數 透明色, 整數型, 可空, 默認為白色
.參數 CUR光標, 邏輯型, 可空, 真為CUR光標,假為圖標
.參數 指針左熱點, 字節型, 可空, CUR光標為真時有效,以0開始
.參數 指針頂熱點, 字節型, 可空, CUR光標為真時有效,以0開始
.局部變量 位圖, 位圖
.局部變量 IFH, ICONFILEHEADER
.局部變量 BIH, BITMAPINFOHEADER
.局部變量 RGBD, 字節集
.局部變量 FBY, 字節集
.局部變量 I
.局部變量 J
.局部變量 K1
.局部變量 K2
.局部變量 BY
.局部變量 BYY
.局部變量 BY2
.局部變量 字節集, 字節集
.局部變量 寬度, 整數型
.局部變量 高度, 整數型
.局部變量 A, 整數型
.局部變量 TMZ, 整數型
.局部變量 DD, 整數型
.局部變量 補碼, 整數型
.如果真 (位圖.載入數據 (被轉BMP數據) = 假)
  返回 (假)
.如果真結束
寬度 = 位圖.取寬度 ()
.如果真 (寬度 > 255)
  返回 (假)
.如果真結束
高度 = 位圖.取高度 ()
.如果真 (高度 > 255)
  返回 (假)
.如果真結束
.如果 (寬度 % 32 ≠ 0)
  TMZ = 寬度 ÷ 32 + 1
.否則
  TMZ = 寬度 ÷ 32
.如果結束
TMZ = TMZ × 高度
補碼 = 寬度 % 4
IFH.idReserved = 0
IFH.idType = 選擇 (CUR光標, 2, 1)
IFH.idCount = 1
IFH.bHeight = 高度
IFH.bWidth = 寬度
IFH.bColorCount = 0
IFH.bReserved = 0
IFH.wPlanes = 選擇 (CUR光標, 指針左熱點, 1)
IFH.wBitCount = 選擇 (CUR光標, 指針頂熱點, 24)
IFH.dwBytesInRes = 寬度 × 高度 × 3 + TMZ × 4 + 補碼 × 高度 + 40 ' 3240
IFH.dwImageOffset = 22 ' 取文本長度 (ifh)
BIH.biSize = 40 ' 取文本長度 (bih)
BIH.biWidth = 寬度
BIH.biHeight = 高度 × 2 ' !!!
BIH.iPlanes = 1
BIH.biBitCount = 24
BIH.biCompression = 0
BIH.biSizeImage = 寬度 × 高度 × 3 + 補碼 × 高度 ' 3200
BIH.biXPelsPerMeter = 0
BIH.biYPelsPerMeter = 0
BIH.biClrUsed = 0
BIH.biClrImportant = 0
.如果 (是否為空 (透明色))
  BY = 16777215
.否則
  BY = 透明色
.如果結束
RGBD = 取空白字節集 (BIH.biSizeImage)
FBY = 取空白字節集 (TMZ × 4)
K1 = 0
K2 = 1
A = 128
.計次循環首 (高度, I) ' 從左下角逐行掃描
  .計次循環首 (寬度, J)
    BYY = 位圖.取某點顏色 (J - 1, 高度 - I) ' 獲得圖像上某一點的顏色Long值
    .如果 (BYY ≠ BY) ' 如果該點為透明色
      RGBD [K1 + 3] = 位與 (BYY, 255) ' 取整 (BYY ÷ 65536)
      RGBD [K1 + 2] = 位與 (右移 (BYY, 8), 255)
      RGBD [K1 + 1] = 右移 (BYY, 16)
    .否則
      BY2 = BY2 + A
    .如果結束
    K1 = K1 + 3
    A = A ÷ 2
    .如果真 (A = 0)
      FBY [K2] = BY2
      K2 = K2 + 1
      A = 128
      BY2 = 0
    .如果真結束
  .計次循環尾 ()
  .如果真 (A ≠ 128)
    FBY [K2] = BY2
    K2 = K2 + 1
    A = 128
    BY2 = 0
  .如果真結束
  DD = K2 % 4
  .如果真 (DD ≠ 1)
    K2 = K2 + 5 - DD
  .如果真結束
  K1 = K1 + 補碼
.計次循環尾 ()
獲得ICO數據 = 取空白字節集 (22)
拷貝內存_ICONFILEHEADER (獲得ICO數據, IFH, 22)
字節集 = 取空白字節集 (40)
拷貝內存_BITMAPINFOHEADER (字節集, BIH, 40)
獲得ICO數據 = 獲得ICO數據 + 字節集 + RGBD + FBY
返回 (真)
.子程序 BMP轉ICO2, 邏輯型, 公開, 用數據轉換,非本人所寫
.參數 被轉BMP數據, 字節集
.參數 獲得ICO數據, 字節集, 參考
.參數 透明色, 整數型, 可空, 默認為白色
.參數 CUR光標, 邏輯型, 可空, 真為CUR光標,假為圖標
.參數 指針左熱點, 字節型, 可空, CUR光標為真時有效,以0開始
.參數 指針頂熱點, 字節型, 可空, CUR光標為真時有效,以0開始
.局部變量 BMP數據2, 字節集
.局部變量 IFH, ICONFILEHEADER
.局部變量 BIH, BITMAPINFOHEADER
.局部變量 RGBD, 字節集
.局部變量 FBY, 字節集
.局部變量 I
.局部變量 J
.局部變量 K1
.局部變量 K2
.局部變量 BY, RGBDATA
.局部變量 BYY, RGBDATA
.局部變量 BY2
.局部變量 字節集, 字節集
.局部變量 寬度, 整數型
.局部變量 高度, 整數型
.局部變量 長度, 整數型
.局部變量 A, 整數型
.局部變量 TMZ, 整數型
.局部變量 DD, 整數型
.局部變量 補碼, 整數型
.如果真 (取字節集長度 (被轉BMP數據) < 54 或 被轉BMP數據 [1] ≠ 66 或 被轉BMP數據 [2] ≠ 77) ' BM6
  返回 (假)
.如果真結束
寬度 = 取字節集數據 (被轉BMP數據, #整數型, 19)
高度 = 取字節集數據 (被轉BMP數據, #整數型, 23)
長度 = 取字節集數據 (被轉BMP數據, #整數型, 35)
.如果真 (寬度 > 255)
  返回 (假)
.如果真結束
.如果真 (高度 > 255)
  返回 (假)
.如果真結束
BMP數據2 = 取字節集中間 (被轉BMP數據, 55, 長度)
.如果 (寬度 % 32 ≠ 0)
  TMZ = 寬度 ÷ 32 + 1
.否則
  TMZ = 寬度 ÷ 32
.如果結束
TMZ = TMZ × 高度
補碼 = 寬度 % 4
IFH.idReserved = 0
IFH.idType = 選擇 (CUR光標, 2, 1)
IFH.idCount = 1
IFH.bHeight = 高度
IFH.bWidth = 寬度
IFH.bColorCount = 0
IFH.bReserved = 0
IFH.wPlanes = 選擇 (CUR光標, 指針左熱點, 1)
IFH.wBitCount = 選擇 (CUR光標, 指針頂熱點, 24)
IFH.dwBytesInRes = 寬度 × 高度 × 3 + TMZ × 4 + 補碼 × 高度 + 40 ' 3240
IFH.dwImageOffset = 22 ' 取文本長度 (ifh)
BIH.biSize = 40 ' 取文本長度 (bih)
BIH.biWidth = 寬度
BIH.biHeight = 高度 × 2 ' !!!
BIH.iPlanes = 1
BIH.biBitCount = 24
BIH.biCompression = 0
BIH.biSizeImage = 寬度 × 高度 × 3 + 補碼 × 高度 ' 3200
BIH.biXPelsPerMeter = 0
BIH.biYPelsPerMeter = 0
BIH.biClrUsed = 0
BIH.biClrImportant = 0
.如果真 (取字節集長度 (BMP數據2) < BIH.biSizeImage)
  返回 (假)
.如果真結束
.如果 (是否為空 (透明色))
  BY.R = 255
  BY.G = 255
  BY.B = 255
.否則
  BY.R = 位與 (透明色, 255) ' 取整 (BYY ÷ 65536)
  BY.G = 位與 (右移 (透明色, 8), 255)
  BY.B = 右移 (透明色, 16)
.如果結束
RGBD = 取空白字節集 (BIH.biSizeImage)
FBY = 取空白字節集 (TMZ × 4)
K1 = 0
K2 = 1
A = 128
.計次循環首 (高度, I) ' 從左下角逐行掃描
  .計次循環首 (寬度, J)
    BYY.R = BMP數據2 [K1 + 3]
    BYY.G = BMP數據2 [K1 + 2]
    BYY.B = BMP數據2 [K1 + 1]
    .如果 (BYY.R ≠ BY.R 或 BYY.G ≠ BY.G 或 BYY.B ≠ BY.B) ' 如果該點為透明色
      RGBD [K1 + 3] = BYY.R
      RGBD [K1 + 2] = BYY.G
      RGBD [K1 + 1] = BYY.B
    .否則
      BY2 = BY2 + A
    .如果結束
    K1 = K1 + 3
    A = A ÷ 2
    .如果真 (A = 0)
      FBY [K2] = BY2
      K2 = K2 + 1
      A = 128
      BY2 = 0
    .如果真結束
  .計次循環尾 ()
  .如果真 (A ≠ 128)
    FBY [K2] = BY2
    K2 = K2 + 1
    A = 128
    BY2 = 0
  .如果真結束
  DD = K2 % 4
  .如果真 (DD ≠ 1)
    K2 = K2 + 5 - DD
  .如果真結束
  K1 = K1 + 補碼
.計次循環尾 ()
獲得ICO數據 = 取空白字節集 (22)
拷貝內存_ICONFILEHEADER (獲得ICO數據, IFH, 22)
字節集 = 取空白字節集 (40)
拷貝內存_BITMAPINFOHEADER (字節集, BIH, 40)
獲得ICO數據 = 獲得ICO數據 + 字節集 + RGBD + FBY
返回 (真)
.子程序 檢測圖像欲轉換大小
.如果真 (單選框_16.選中 = 真)
  程序集_圖像大小.寬度 = 16
  程序集_圖像大小.高度 = 16
  返回 ()
.如果真結束
.如果真 (單選框_32.選中 = 真)
  程序集_圖像大小.寬度 = 32
  程序集_圖像大小.高度 = 32
  返回 ()
.如果真結束
.如果真 (單選框_64.選中 = 真)
  程序集_圖像大小.寬度 = 64
  程序集_圖像大小.高度 = 64
  返回 ()
.如果真結束
.如果真 (單選框_128.選中 = 真)
  程序集_圖像大小.寬度 = 128
  程序集_圖像大小.高度 = 128
  返回 ()
.如果真結束
.子程序 _單選框_16_被單擊
檢測圖像欲轉換大小 ()
.子程序 _單選框_32_被單擊
檢測圖像欲轉換大小 ()
.子程序 _單選框_64_被單擊
檢測圖像欲轉換大小 ()
.子程序 _單選框_128_被單擊
檢測圖像欲轉換大小 ()
.子程序 __啟動窗口_將被銷毀
刪除文件 (取特定目錄 (11) + “\” + 取文本右邊 (到小寫 (取文本右邊 (程序集_文件路徑, 4)), 1))
刪除文件 (取特定目錄 (11) + “\” + 取文本右邊 (到小寫 (取文本右邊 (程序集_文件路徑, 4)), 1) + “.bmp”)

運行結果:

易語言如何實現提取ICO圖標并支持多種圖像格式轉換功能

感謝你能夠認真閱讀完這篇文章,希望小編分享的“易語言如何實現提取ICO圖標并支持多種圖像格式轉換功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊通| 莎车县| 江陵县| 美姑县| 三门县| 平武县| 株洲县| 萝北县| 乌鲁木齐县| 棋牌| 陆河县| 满洲里市| 南川市| 天津市| 松阳县| 南阳市| 海原县| 长乐市| 枣阳市| 汤阴县| 宁国市| 博爱县| 弋阳县| 湖口县| 广丰县| 海阳市| 庆安县| 本溪市| 大洼县| 林周县| 平南县| 禹城市| 卢龙县| 彭州市| 青冈县| 清涧县| 垫江县| 屏东市| 乐陵市| 河西区| 沂水县|