我正在編寫使用go-bindata
的golang程序來嵌入圖像資源,並使用Asset(string) ([]byte, error)
函數訪問資源。但我的現有庫的代碼是這樣的:如何在golang中從windows'syscall`加載圖片資源?
func NewIconFromFile(filePath string) (uintptr, error) {
absFilePath, err := filepath.Abs(filePath)
if err != nil {
return 0, err
}
hicon, _, _ := LoadImage.Call(
0,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(absFilePath))),
IMAGE_ICON,
0,
0,
LR_DEFAULTSIZE|LR_LOADFROMFILE)
if hicon == 0 {
return 0, errors.New("load image failed: " + filePath)
}
return hicon, nil
}
我怎麼能改寫這個功能:
func NewIconFromRawBytes(imgBytes []byte) (uintptr, error)
,因此它可以加載圖片來自[]byte
支持?任何幫助?謝謝。
編輯:有a similar c++ version question,我該如何將它移植到golang。
你爲什麼要返回'uintptr'? – Flimzy
什麼是LoadImage?在你的代碼中似乎有很多假設沒有被充分解釋以提供答案。 – Flimzy
@apxp:這不是警告的意思,並且在您看到「不安全」時盲目重複是沒有用的。 Go中的許多事物都需要'unsafe'包裝,例如使用'sys' /'syscall'軟件包,並且在未來版本中完全支持正確使用。該警告意味着可能會以依賴於內部實現或平臺特定細節的方式使用不安全,而不是簡單地導入它會使您的程序不合規。 – JimB