问题标签 [stb-image]

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 回答
111 浏览

c++ - 如何使用 stbi_load 从 cairo_image_surface_create_for_data 渲染图像?

我正在使用 Cairo 渲染图像,但我遇到的问题是画布总是用空白绘制(没有绘制图像)。请参考我下面的代码:

但是,如果我使用 Cairo 当前支持的功能渲染 png 文件,它运行良好,我的代码如下:

0 投票
0 回答
112 浏览

c++ - 使用 stb_image.h 读取 PNG 会导致内存充满 NUL 字节

我现在正在寻找几个图像处理库。昨天我发现了一些名为“ stb_image.h ”的库并尝试进行一些测试,但我无法读取 png 文件格式。当然,jpg 可以正常工作。只有png文件出现了问题。有没有人遇到过同样的问题?

  1. 我下载了链接下面的 stb_image.h 文件。

  2. 我做了一个如下所示的测试代码。

  1. 试验结果

    • 所有 jpg 格式文件均已成功读取数据。
    • 所有 png 格式文件都无法读取数据。但是width,height的值,却成功获取了。但是,数据为空。
  2. 这是我加载 png 文件时返回的内存内容。

  3. 测试环境

    • Xcode 版本 12.5
  4. 测试png文件。

0 投票
0 回答
90 浏览

cairo - 如何将 stb_image 顺序 RGBA 更改为 ARGB?

我正在使用 stb_image 读取图像数据,我在图像数据通道排序方面遇到了麻烦。

正如在这个库中看到的那样,他们定义了如下的枚举,但从不使用。

默认情况下,所有输出数据的顺序为 RGB。但我的目标是使用这些数据在 cairo 表面上渲染,需要如下所示:

我可以找到新的 stb_image 库还是需要参考其他方法?谢谢。

0 投票
0 回答
96 浏览

cairo - 如何使用 stbi_load 输出格式为 STBI_grey 并使用与 cairo 相同的步幅?

我的代码如下,现在它可以工作,但我需要再运行一个循环来在从 stb_image 加载后重新处理图像数据。请看一看:

我的问题是,我不想在这种情况下运行 for 函数来提高速度。

在这种情况下,我将直接使用来自 stbi_load 的数据,如下所示:

在此处输入图像描述

如果有任何方法可以从 stb_image 获取数据,包括步幅,如上图所示。我认为这也是开罗的要求。

0 投票
1 回答
120 浏览

c - stbi_load() 返回空字符串“”

我使用 stbi_load 具有以下功能:

文件来自:

使用 stbi_failure_reason() 没有错误,使用 gdb 检查数据内容时,我看到:

我错过了什么?

0 投票
1 回答
125 浏览

c++ - 使用 C++ 在 OpenGL 中渲染纹理时的问题

我在 OpenGL 中渲染纹理时遇到问题。
我的目标是渲染透明和非透明纹理,但我使用的代码似乎交换和混合了我的文件的像素。我主要从本教程(learnopengl.com)获取代码,我只修改了一些东西。
这就是我得到的:

奇怪的像素闪烁

这就是我应该看到的:

正常渲染

我没有使用与教程相同的纹理,但它们的格式相同(png对于窗户、jpg地板和立方体)

我没有收到任何错误消息。

这是我的代码:

这是用-DDEBUG

我使用的纹理:

floor.jpg

地板.jpg

brick.jpg

砖块.jpg

window.png

窗口.png

提前感谢您的帮助,如果您需要更多代码或详细信息,请告诉我。

0 投票
0 回答
78 浏览

opengl - 将带有 STB 的纹理加载到 OpenGL 中显示不正确的 alpha 值

我正在尝试使用 stb 图像库将 RGBA 图像加载到 OpenGL 中。图像透明部分的下半部分显示为部分透明,而不是完全透明。我认为这可能与图像格式有关,但我不确定。

这是从 Gimp 获取的源图像:

源图像

这是输出:(请注意,我目前正在让着色器将 alpha 通道输出到红色通道中,所以红色意味着它是不透明的,黑色是透明的)

输出

这是加载图像数据并创建纹理的代码:

我目前正在将图像导出为每种颜色 8 位的 RGBA。我尝试了不同的格式,例如每种颜色 16 位、浮点颜色而不是整数颜色,但那些使情况变得更糟,所以我认为 8bpc 的 RGBA 是正确的。

该代码也适用于其他图像,如下所示,所以我不确定为什么这不起作用。

正确的图像

0 投票
1 回答
138 浏览

opengl - How to check if image should be flipped vertically before loading using stb_image

I'm writing a project using OpenGL, and loading the textures using stb_image.

Some of the textures are loaded flipped upside down (regarding the y-axis) so I use "stbi flip image vertically on load" to load them properly.

The problem is that some of the textures I load require flipping, and some not, But of course my code flipps them all. how can I check (before loading, or at least before flipping) whether or not to flip the image?

0 投票
1 回答
36 浏览

c++ - 为什么我设置的opengl视口宽度变小了,读取像素不对齐?

代码如下(使用此处输入链接描述中的演示)来渲染字形

当我尝试将视口宽度设置为恰到好处的渲染文本大小时,我得到错误要么 malloc 检查标题错误 或得到图像 Misaligned Misplaced 图片,但是当我将宽度设置得足够大时,例如 1024,图像可以显示正确。

0 投票
1 回答
24 浏览

java - stbi_load 方法不接受我的参数

出于某种原因,stbi_load不接受方法中的第二个、第三个和第四个参数,即使它们都是有效的整数。它给出了以下错误

任何想法为什么会发生这种情况?任何答案表示赞赏