首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制webp图像

绘制webp图像
EN

Stack Overflow用户
提问于 2014-06-04 08:01:43
回答 1查看 351关注 0票数 0

我有一个表示PNG的byteArray,但我想将它转换为webP。我有下面的代码。我在代码中使用了com.sksamuel.scrimage.Image,并加载了系统库webp_jni。

代码语言:javascript
复制
val image = Image(content) //content of PNG of type Array[Byte]
extension match {
    case "webp" => Ok(
        libwebp.WebPEncodeRGB(
            image.write,
            image.width,
            image.height,
            image.width * 3,
            80F)
        ).as("image/webp")
    case _ => Ok(image.write).as("image/png")
}

如果我请求png映像,它都可以正常工作,但是当请求webP映像时,我会得到以下内容。

代码语言:javascript
复制
#  SIGSEGV (0xb) at pc=0x00007fc008287377, pid=14883, tid=140461610465024
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libwebp.so.5+0x33377]  WebPPictureAlloc+0x407

我尝试了其他值,用于跨步输入image.width,image.width四舍五入为4倍,image.width四舍五入为3倍。在这种情况下,它不会崩溃,但图像非常嘈杂,与原始图像完全不一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-04 14:14:42

我将我的项目切换到使用webp-imageio库,并能够以以下方式实现它。

代码语言:javascript
复制
val image = Image(content) //content of PNG of type Array[Byte]
extension match {
    case "webp" => {
        val out = new ByteArrayOutputStream()
        ImageIO.write(resizedImage.awt, "webp", out)
        Ok(out.toByteArray).as("image/webp")
    case _ => Ok(image.write).as("image/png")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24032034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档