2017-02-10 5 views
-1

私は.icoファイルの内容をメモリにconst char*として保存していますが、このデータからHICONを作成します。私の現在のアプローチは、一時ファイルにデータを書き込んでから、​​を使用することです。代わりにメモリから直接アイコンを作成することはできますか?ウィンドウ上のメモリからHICONを作成する

+0

はい。ファイルを解析し、アイコンを作成します。 –

+0

@DavidHeffernanファイルの作成を避けようとしています。私は文字の配列としてメモリ内のアイコンの内容を持っていて、そのデータから直接HICONを作成したいと思っています。 –

+1

'CreateIconFromResource'を見てください。 –

答えて

1

GDI +またはWICを使用せずにこれを行う場合は、.ICOファイルの形式が.EXE/.DLLのアイコンリソースとまったく同じではないため、何らかの構文解析を行う必要がありますリソースベースのアイコン機能を使用します。公式のバイナリ仕様はhereであり、それについての素晴らしいブログシリーズがありますhere

.icoファイルに複数のイメージがある場合は、イメージディメンションが見つかるまで、アイコンディレクトリをループする必要があります。次にCreateIconに電話してHICONを作成することができます。

0

CreateIconでアイコンを作成することはできますが、png形式の画像データを送ってもらうことはできません。

私は CreateIconFromResourceExで成功を収めて

(他の言語を使用するために申し訳ありませんが、一例として、それを取る、あなたは直接Cでその関数を使用することができます):

from ctypes import * 
from ctypes.wintypes import * 
CreateIconFromResourceEx = windll.user32.CreateIconFromResourceEx 

size_x、size_yを= 32、32 LR_DEFAULTCOLOR = 0

with open("my32x32.png", "rb") as f: 
    png = f.read() 
hicon = CreateIconFromResourceEx(png, len(png), 1, 0x30000, size_x, size_y, LR_DEFAULTCOLOR) 

希望します。

関連する問題