Jack Mordaunt 能否提供一个潜在的解决方案?我知道用 Go 重写 libwebp 将非常耗时,但 Jack Mordaunt 利用了 ccgo,并成功地将 libwebp 的 C 代码移植到了原生的 Go 代码中,使其功能正常。如果我理解正确的话。我不是Maven,不确定这种方法可能带来的任何潜在风险,但我想分享这个想法。@JackMordaunt
Jack Mordaunt 是否能提供一个潜在的解决方案?我知道用 Go 重写 libwebp 会非常耗时,但 Jack Mordaunt 利用了 ccgo,并成功地将 libwebp 的 C 代码移植到了原生的 Go 代码中,使其功能正常。如果我理解正确的话。我不是Maven,不确定这种方法可能带来的任何潜在风险,但我想分享这个想法。@JackMordaunt 感谢参考! 是的,它是功能正常的。然而,转译方法有很多缺点,使得它无法成为官方的东西。
9条答案
按热度按时间kmb7vmvb1#
CC @nigeltao
knpiaxh12#
WebP编码器的工作量很大。如果有人想编写一个,那将是非常棒的。但据我所知,没有人正在进行这项工作。
fafcakar3#
遗憾的是,尽管我理解这可能需要一些工作,但考虑到webp和go都是你们制作的,它感觉应该可以直接使用。
在使用第三方包将文件转换为webp时添加C绑定可能会很混乱,同样使用可执行文件也是如此。
我很想提供帮助来为/x/image库做出贡献,但不知道从何开始。
kfgdxczn4#
我明白这可能需要一些工作
这不是一点点工作。正如伊恩所说,这是大量的工作。:-)
0s0u357o5#
这真是遗憾,虽然我理解这可能需要一些工作,但考虑到webp和go都是你们制作的,它应该可以开箱即用。
使用第三方包在转换为webp时添加C绑定可能会很混乱,同样使用可执行文件也是如此。
好消息是图像编码比图像解码在安全性方面要少很多陷阱,这仅仅是因为输入格式(位图)要简单得多。
话虽如此,你是否考虑过ImageFlow?它是免费软件(AGPL),既可作为守护进程,也可作为库提供。也有商业许可证可供选择。
uyto3xhc6#
开始一个新的网站项目,使用Go后端,并计划使用WebP作为图像缩略图,看到没有原生编码器真的很遗憾。:(
我真的很想避免使用C绑定(由于性能和内存安全方面的担忧),但似乎目前唯一的选择就是执行官方的
webp
二进制文件,这也不是一个好主意,因为你要么将文件写入磁盘,要么想出一个复杂的虚拟文件系统来实现它。我还考虑过using Rust,但那对我来说太高级了。
编辑:我找到了https://github.com/nickalie/go-webpbin,看起来相当不错。不过还没有测试过。
o7jaxewo7#
Jack Mordaunt 能否提供一个潜在的解决方案?我知道用 Go 重写 libwebp 将非常耗时,但 Jack Mordaunt 利用了 ccgo,并成功地将 libwebp 的 C 代码移植到了原生的 Go 代码中,使其功能正常。如果我理解正确的话。我不是Maven,不确定这种方法可能带来的任何潜在风险,但我想分享这个想法。@JackMordaunt
rsl1atfo8#
我认为有一个更好的解决方案。例如,可以使用C语言库中的c-bindings。
pu3pd22g9#
Jack Mordaunt 是否能提供一个潜在的解决方案?我知道用 Go 重写 libwebp 会非常耗时,但 Jack Mordaunt 利用了 ccgo,并成功地将 libwebp 的 C 代码移植到了原生的 Go 代码中,使其功能正常。如果我理解正确的话。我不是Maven,不确定这种方法可能带来的任何潜在风险,但我想分享这个想法。@JackMordaunt
感谢参考!
是的,它是功能正常的。然而,转译方法有很多缺点,使得它无法成为官方的东西。
ccgo
进行转译,这是一个正在开发中的实验性工具uintptr
,因此完全不安全对于感兴趣的人,
go-libwebp
还允许调用动态库(如果可用)。但是,这使用purego
进行调用,而不需要 cgo。purego
也是一项实验性工具。