是否有可能通过 Golang 获取可执行文件图标?
Is it possible to get executable file icon by Golang?
我正在尝试编写一个“下载页面网站”,并试图在我的网页上显示文件图标。
和Windows系统一样,“.exe”文件里面有图标图像。或者 linux 可执行文件。我可以读吗?
我知道python可以用包名"win32api"实现,请问有没有golang的包可以实现这个功能?
您可以利用 linux 包。
例如可以使用icoextract
,可以通过apt安装:
apt install icoextract
然后 运行 像这样:
icoextract /path/to/file.exe /path/to/file.ico
Go 可以调用命令并使用包 os/exec
执行它们。所以你可以做类似
的事情
func ExtractIcon(executablePath string) []byte {
file, err := ioutil.TempFile("dir", "prefix")
if err != nil {
log.Fatal(err)
}
defer os.Remove(file.Name())
cmd := exec.Command("icoextract", executablePath, file.Name())
if err = cmd.Run(); err != nil {
log.Fatal(err)
}
content, _ := ioutil.ReadFile(file.Name())
return content
}
我正在尝试编写一个“下载页面网站”,并试图在我的网页上显示文件图标。
和Windows系统一样,“.exe”文件里面有图标图像。或者 linux 可执行文件。我可以读吗?
我知道python可以用包名"win32api"实现,请问有没有golang的包可以实现这个功能?
您可以利用 linux 包。
例如可以使用icoextract
,可以通过apt安装:
apt install icoextract
然后 运行 像这样:
icoextract /path/to/file.exe /path/to/file.ico
Go 可以调用命令并使用包 os/exec
执行它们。所以你可以做类似
func ExtractIcon(executablePath string) []byte {
file, err := ioutil.TempFile("dir", "prefix")
if err != nil {
log.Fatal(err)
}
defer os.Remove(file.Name())
cmd := exec.Command("icoextract", executablePath, file.Name())
if err = cmd.Run(); err != nil {
log.Fatal(err)
}
content, _ := ioutil.ReadFile(file.Name())
return content
}