问题标签 [juicy-pixels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
508 浏览

haskell - 如何使用 JuicyPixels 写入像素?(在 ST 单子中)

我想将一些像素写入图像,并将图像写入磁盘。我一直在遵循我从许多 Haskeller 那里听到的建议来遵循类型签名,并且基本上玩“类型俄罗斯方块”,直到我到达我要去的地方。它主要为我工作,但我遇到了一些麻烦。

要写一个像素,有一个函数:

我可以通过阅读签名告诉我需要将 MutableImage 传递给它,所以我寻找一个带有 MutableImage 的函数:

这似乎在某种状态单子中运行。

这有效,并返回我可以写入磁盘的漂亮灰色图像。但我不知道如何获取 MutableImage 以便我可以将像素写入它!简单地插入 writePixel 调用会给我一个我无法弄清楚的错误:

结果是:

我可以从 writePixel 签名中看出我缺少 writePixel 的第一个参数。如何获得对 MutableImage 的引用,以便我可以写入它?更重要的是,我如何在这个 monad 中的类型上找到立足点,以便我自己解决这些问题?

0 投票
1 回答
748 浏览

opengl - 如何使用 Haskell 中的 JuicyPixels 库加载 OpenGL 纹理

您能否提供一个示例,说明如何在 Haskell 中使用 texImage2D(来自 OpenGL)和 readImage(来自 JuicyPixels 库)加载纹理?

我知道这里已经有一个类似的问题但是由于我是新手,我无法使该示例有效。我需要完整的代码,也许还需要一些关于它是如何工作的解释......

0 投票
2 回答
153 浏览

opengl - OpenGL 纹理包含错误数据 - 这是怎么回事?

我正在尝试将图像加载到 OpenGL 纹理中。

我创建了一个窗口和 GL 4.4 Core Forward-Compatible 上下文:

语境

这是我用来加载图像和创建纹理的代码:

注释掉的行是另一种尝试将任何有意义的东西放入该纹理中。

以下是 gDebugger 报告的纹理信息:

纹理信息

以下是它显示的纹理内容:

纹理内容

当我打印出 JuicyPixels 返回的结构时,它会打印出不同的字节序列,这些字节序列肯定不会产生平面图像。

在此示例中,我没有渲染纹理,而是使用gl包生成的原始绑定。使用 package.json 时,我的行为完全相同(具有相同的蓝绿色)OpenGL。不出所料,它在屏幕上呈现为一个平面矩形。

我尝试过使用不同的图像,尺寸为 128x128 和 NPOT(如屏幕截图所示为 100x100)。

什么可能导致这种行为?

完整源码

0 投票
1 回答
395 浏览

image - JuicyPixels 无法加载 PNG 文件

我正在尝试学习如何使用 JuicyPixels 版本 3.2.5.1 加载、修改和保存图像。我有以下代码:

imageCreator函数是从 JuicyPixels 文档中稍作修改的:https ://hackage.haskell.org/package/JuicyPixels-3.2.5.1/docs/Codec-Picture.html修改是添加了两个调用fromIntegral,如没有它们,这个例子就无法编译。(对我来说,文档中的示例无法编译似乎很奇怪,所以如果我在做一些愚蠢的事情,请告诉我)

运行此程序将创建一个名为“test.png”的图像并打印:

无效的PNG文件,签名损坏

这可能是来自调用的错误消息decodePng。我已经尝试过使用其他一些 PNG,一个是我在 Gimp 中创建的,另一个是我在 MS paint 中创建的。我通过imageCreator "test.png"从我的主要功能中删除该行来做到这一点,以避免覆盖我想要测试的图像。

为了加载 PNG 图像,我应该改变什么?

0 投票
1 回答
535 浏览

haskell - 如何从(大多数)图片中提取 RGB 值?

我想从 Haskell 中的可能图片中提取每个 RGB 值。

获取原始值(0-255)的最简单方法是什么?

我已经用 Juicy Pixels 库得到了一些结果,但不知何故我总是得到例外:

这是对应的代码。

这是一个示例图像:链接

代码目前有点无序,因为我不得不复制一些Codec.Picture.RGBA8不能通过 LTS 获得的定义。不要介意字符串表示,我正在通过带有 WiFi 屏蔽的 Arduino 解析这些。

0 投票
1 回答
330 浏览

haskell - 如何在 haskell 中使用 ffmpeg-light 查找 mp4 元数据?

我正在使用 ffmpeg-light、JuicyPixels 和光泽度来显示带有 Haskell 的视频。我想找到我正在自动播放的视频的元数据,但我还没有找到这样做的方法。

我想访问视频的分辨率和帧速率等元数据。

你能帮助我吗?

编辑:

我已经尝试过您的解决方案@CRDrost,但视频现在以 2 倍正常速度播放。我假设函数 imageReaderTime 给出了错误的时间戳。

编辑2:

播放速度异常是ffmpeg-light库中的一个bug。我在 github 存储库中打开了一个问题。

我更新的代码:

0 投票
1 回答
242 浏览

image - Haskell - 使用 ffmpeg-light 包将多个图像文件转换为一个视频文件

背景
我编写了一个图像处理应用程序,它使用ffmpeg-light包来获取给定视频文件的所有帧,以便之后程序能够对每个帧应用灰度以及边缘检测算法。

现在我正在尝试将所有帧放回单个视频文件中。

使用
的库 ffmpeg-light-0.12.0
JuicyPixels-3.2.8.3
...

我尝试了什么?
老实说,我并没有真正尝试过任何事情,因为我有点不知道从哪里开始以及如何开始。我看到有一个名为Command允许使用命令行运行进程/命令的包。有了它,我可以使用 ffmpeg (not ffmpeg-light) 从图像文件中创建一个视频,我必须先将其保存到硬盘驱动器中,但这有点笨拙。

ffmpeg-lighton hackage ( ffmpeg-light docu ) 的文档中,我发现 frameWriter 函数听起来很有希望。

我猜FilePath这将是存储视频文件的位置,但我真的无法想象如何将帧EncodingParams应用于此功能。


我可以访问的其他人:

  • r, g, b,a以及y. a价值观
  • 图像宽度/高度/格式

问题
有没有办法使用ffmpeg-light包来实现这一点?

由于该ffmpeg-light软件包在从图像转换为视频时缺少文档,我非常感谢您的帮助。(我不希望有一个完全有效的解决方案。)

代码
读取帧的代码:

我卡在哪里/应该将图像转换为视频的代码:

0 投票
1 回答
362 浏览

image - Haskell - 将多个图像转换为视频文件 - ffmpeg-lights 的 frameWriter-function 失败

目前
,我正在开发一个图像处理应用程序,该应用程序使用 ffmpeg-light 来获取给定视频文件的所有帧,以便之后程序可以对每个帧应用灰度以及边缘检测算法。

在友好的 stackoverflowers 的帮助下,我能够使用 ffmpeg-lights 的frameWriter功能设置一种能够将多个图像转换为一个视频文件的方法。

问题
应用程序运行良好,直到它到达frameWriter函数的那一刻,我真的不知道为什么,因为没有抛出错误或异常消息。(操作系统:Win 10 64 位)

我尝试了什么?
我试过..
- ffmpeg 的不同版本(从 3.2 到 3.4)。
- ffmpeg.exe 使用命令行测试是否缺少任何编解码器,但我尝试的任何转换都有效。
- 不同的 EncodingParams-combinations: like.. EncodingParams width height fps (Nothing) (Nothing) "medium"

问题
不幸的是,上述方法均无效,并且网络缺乏针对该特定案例的信息。也许我错过了一些重要的东西(比如 ghc 标志或其他东西)或者在我的代码中犯了更大的错误。这就是为什么我要问你:你对我有什么建议/建议吗?

Haskell 包
- ffmpeg-light-0.12.0
- JuicyPixels-3.2.8.3

代码

0 投票
2 回答
281 浏览

haskell - IO(可能是图片)-> 图片

我正在用 Gloss 创建一个游戏。我有这个功能:

如何获取此 IO(可能是图片)并将其转换为图片?

0 投票
2 回答
71 浏览

haskell - 从列表中选择特定图片

我有以下功能:

如果n==0我要选择pic1,如果n==1我要选择pic2。否则我想选择pic3. 问题是当其中一张图片没有加载时,它不会出现在列表中。而不是[pic1,pic2,pic3]我有类似的东西[Pic1,Pic3]。当功能是supposed选择不在列表中的图片时,我希望它改写"X"。为此,我将使用该功能 text "X"。问题是我不知道如何让它写"X"而不是选择错误的图片。

编辑:我创建了以下函数,但由于某种原因,我在图片中收到错误“变量不在范围内”。