问题标签 [libpng]

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 投票
2 回答
15540 浏览

png - 16位灰度png

我正在尝试编写(使用 libpng)一个 16 位灰度图像,其中每个点的颜色等于其坐标的总和。下面的代码应该生成一个 16 位的 PNG,而是生成一个像这样的 8 位的. 为什么?

0 投票
1 回答
545 浏览

compiler-construction - 为什么在编译程序时,找不到 tesseract?

我正在尝试编译 OCR 0.4,谷歌的光学识别程序。

正如自述文件中所写,他们需要:

1) 确保您安装了这些软件包(当前的 Ubuntu/Debian 版本应该可以工作): libpng(带有标题) libjpeg(带有标题) libtiff(带有标题)

2) 从http://code.google.com/p/iulib安装 iulib

3) 从 Subversion 存储库 (http://code.google.com/p/tesseract-ocr) 安装当前版本的 tesseract

4) 从发布目录,运行 ./configure make sudo make install

我已经完成了上面所有的段落,然后当我在命令行中输入“./configure”时,我收到了这个错误:

检查 /usr/include/tesseract/baseapi.h... 没有配置:错误:找不到 tesseract!不想用就选--without-tesseract 或者用--with-tesseract=指定安装路径

到目前为止,我试图解决这个问题,是尝试通过指定我通过键入得到的 tesseract 路径来"which tesseract"编译

所以我输入./configure --with-tesseract=/usr/local/bin/tesseract了同样的错误。

为什么我会得到这个?

提前致谢

编辑-使用下面答案中所述的方法后,出现以下错误:

本地主机:ocropus giorgio$ make 全部在 . g++ -DPACKAGE_NAME=\"ocropus\" -DPACKAGE_TARNAME=\"ocropus\" -DPACKAGE_VERSION=\"0.3\" -DPACKAGE_STRING=\"ocropus\ 0.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"ocropus\" -DVERSION=\"0.3\" -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H_1 -DHAVESTDLIB=1 =1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WCHAR_H=1 -DHAVE_LIBZ=1 -DHAVE_LIBPNG=1 -DHAVE_LIBJPEG=1 -DHAVE_LIBTIFF=1 -DHAVE_LIBIULIB=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBTESSERACT_FULL=1 -DHAVE_LIBLEPT=1 -DHAVE_LIBGSLCBLAS=1 -DHAVE_LIBGSL=1 -DHAVE_LIBBLAS=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DHAVE_DUP2=1 -DHAVE_MEMSET=1 -DHAVE_SQRT=1 -DHAVE_STRCHR=1 -DHAVE_STRDUP=1 -DHAVE_STRRCHR =1 -I。-I./包括 -I.test -f './ocr-line/glclass.cc' || echo './'./ocr-line/glclass.cc 在 ./include/glinerec.h:57 包含的文件中,来自 ./ocr-line/glclass.cc:5: ./include/glutils.h:139: 警告:忽略 # pragma omp 并行 ./ocr-line/glclass.cc:105:警告:忽略 #pragma omp 并行 ./ocr-line/glclass.cc:129:警告:忽略 #pragma omp 并行 ./ocr-line/glclass.cc :175: 警告: 忽略#pragma omp 并行./ocr-line/glclass.cc:236: 警告: 忽略#pragma omp 并行./ocr-line/glclass.cc:421: 警告: 忽略#pragma omp 并行./ ocr-line/glclass.cc:644:警告:忽略 #pragma omp 并行 ./ocr-line/glclass.cc:1166:警告:忽略 #pragma omp 并行 ./ocr-line/glclass.cc:1403:警告:忽略#pragma omp parallel ./ocr-line/glclass.cc:1623:警告:忽略#pragma omp parallel ./ocr-utils/components.h:275:警告:'struct ocropus::IComponentConstructor' 具有虚函数但非虚析构函数 /usr/local/include/colib/narray.h: In member function 'colib::narray& colib::narray::truncate(int) [with T = char]': 。 /ocr-utils/narray-binio.h:48:从此处实例化 /usr/local/include/colib/narray.h:261:警告:在返回非 void /usr/local/include/colib 的函数中没有返回语句/narray.h: 在成员函数 'colib::narray& colib::narray::truncate(int) [with T = int]': ./ocr-line/glclass.cc:295: 从这里 /usr/local 实例化/include/colib/narray.h:261:警告:在函数中没有返回语句返回非 void /usr/local/include/colib/rowarrays.h:在函数'T colib::rowdist_euclidean(colib::narray&, int , colib::narray&) [with T = float]': ./ocr-line/glclass.cc:396:
从这里实例化 /usr/local/include/colib/rowarrays.h:94: 错误: 重载 'sqrt(float)' 的调用不明确 /usr/local/include/colib/iarith.h:345: 注意:候选人是: colib::interval colib::sqrt(colib::interval) /usr/local/include/colib/iarith.h:620: 注意:
colib::dinterval colib::sqrt(colib::dinterval) ./ocr- utils/components.h:在全局范围内:./ocr-utils/components.h:在“ocropus::ComponentConstructorNew”的实例化中:./ocr-utils/components.h:306:从“void ocropus::component_register”实例化(const char*, bool) [with T = glinerec::MappedClassifier]' ./ocr-line/glclass.cc:1795:
从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew 的实例化中': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::Float8Buffer]' ./ocr-line/glclass.cc:1796 实例化: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus:: 的实例化中ComponentConstructorNew': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::KnnClassifier]' 实例化 ./ocr-line/glclass.cc: 1798:从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew 的实例化中': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::BitNN]' ./ocr-line/glclass.cc:1799 实例化: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus:: 的实例化中ComponentConstructorNew': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' 实例化 ./ocr-line/glclass.cc: 1801:/ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 有虚函数但非虚析构函数./ocr-utils/components.h: 在'ocropus::ComponentConstructorNew' 的实例化中: ./ ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::BitNN]' 实例化 ./ocr-line/glclass.cc:1799: 从这里实例化./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: 。 /ocr-utils/components.h:306: 实例化自 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801:/ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 有虚函数但非虚析构函数./ocr-utils/components.h: 在'ocropus::ComponentConstructorNew' 的实例化中: ./ ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::BitNN]' 实例化 ./ocr-line/glclass.cc:1799: 从这里实例化./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: 。 /ocr-utils/components.h:306: 实例化自 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801:ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: ./ocr-utils/components.h:306: 从 'void ocropus::component_register 实例化(const char*, bool) [with T = glinerec::BitNN]' ./ocr-line/glclass.cc:1799: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus: :ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: ./ocr-utils/components.h:306: 从 'void ocropus:: 实例化component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801:ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: ./ocr-utils/components.h:306: 从 'void ocropus::component_register 实例化(const char*, bool) [with T = glinerec::BitNN]' ./ocr-line/glclass.cc:1799: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus: :ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew' 的实例化中: ./ocr-utils/components.h:306: 从 'void ocropus:: 实例化component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801:在 'ocropus::ComponentConstructorNew' 的实例化中:./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::BitNN]' ./ocr -line/glclass.cc:1799: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h :在 'ocropus::ComponentConstructorNew' 的实例化中:./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' 实例化。/ ocr 线/glclass.cc:1801:在 'ocropus::ComponentConstructorNew' 的实例化中:./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::BitNN]' ./ocr -line/glclass.cc:1799: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h :在 'ocropus::ComponentConstructorNew' 的实例化中:./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' 实例化。/ ocr 线/glclass.cc:1801:从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew 的实例化中': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801 实例化:从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew 的实例化中': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AutoMlpClassifier]' ./ocr-line/glclass.cc:1801 实例化:
从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew2 的实例化中': ./ocr-utils/components.h:310:
实例化自 'void ocropus::component_register2(const char*, bool) [with T = glinerec::MappedClassifier, S = glinerec::AutoMlpClassifier]' ./ocr-行/glclass.cc:1802:
从这里实例化 ./ocr-utils/components.h:286: 警告: 'struct ocropus::ComponentConstructorNew2' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus::ComponentConstructorNew 的实例化中': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::AdaBoost]' ./ocr-line/glclass.cc:1804 实例化: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus:: 的实例化中ComponentConstructorNew2': ./ocr-utils/components.h:310: 实例化自 'void ocropus::component_register2(const char*, bool) [with T = glinerec::MappedClassifier, S = glinerec::AdaBoost]' ./ocr -line/glclass.cc:1805:从此处实例化 ./ocr-utils/components.h:286:警告:'struct ocropus::ComponentConstructorNew2' 具有虚拟函数,但非虚拟析构函数 ./ocr-utils/components.h:在 'ocropus: 的实例化中: :ComponentConstructorNew': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::CascadedMLP]' ./ocr-line/glclass.cc 实例化:1807: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 ./ocr-utils/components.h: 在 'ocropus 的实例化中::ComponentConstructorNew2': ./ocr-utils/components.h:310: 从 'void ocropus::component_register2(const char*, bool) [with T = glinerec::MappedClassifier, S = glinerec::CascadedMLP]' 实例化。/ocr-line/glclass.cc:1808: 从这里实例化 ./ocr-utils/components.h:286: 警告: 'struct ocropus::ComponentConstructorNew2' 具有虚函数但非虚析构函数 ./ocr-utils/components .h:在 'ocropus::ComponentConstructorNew' 的实例化中:./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::LatinClassifier]' 实例化./ocr-line/glclass.cc:1810: 从这里实例化 ./ocr-utils/components.h:280: 警告: 'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 make[1]:ComponentConstructorNew': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::LatinClassifier]' 实例化 ./ocr-line/glclass.cc: 1810:从此处实例化 ./ocr-utils/components.h:280:警告:'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 make[1]:ComponentConstructorNew': ./ocr-utils/components.h:306: 从 'void ocropus::component_register(const char*, bool) [with T = glinerec::LatinClassifier]' 实例化 ./ocr-line/glclass.cc: 1810:从此处实例化 ./ocr-utils/components.h:280:警告:'struct ocropus::ComponentConstructorNew' 具有虚函数但非虚析构函数 make[1]:* [glclass.o] 错误 1 ​​make: * [all-recursive] 错误 1

0 投票
4 回答
2805 浏览

linux - 升级最新版本不在分发存储库中的软件包

我需要将 libpng 从 1.2 版升级到 1.5 版。因为这个,我需要这样做:libpng 警告:应用程序构建使用 libpng-1.2.26 但运行 1.5.2。我正在使用 Lubuntu 11.10,并且在 Canonical 存储库中,libnpg 1.5 尚未发布,尽管在 Debian 中有一些测试包(http://packages.debian.org/search?keywords=libpng),起初它们适合我。我将 Debian 存储库添加到 Synaptec 并且能够安装 libpng15,但是这些软件包不会替换 libpng12,儿子在编译某些源代码时,IDE 使用 libpng12 而不是 libpng15。

为了解决这个问题,我下载了 libpng15 deb 包,将其解压缩并使用libpng15文本更改了控制文件的ReplacesConflictsProvides标记。然后,我执行了修改后的 deb,但我只得到一个 GDebi 错误和一般系统故障,因为(我认为)libpng12 被卸载而没有替换并且 Lubuntu 严重依赖它,这迫使我重新安装 Lubuntu,因为计算机没有不能在 Linux 中再次启动。是的,这个解决方案不是我认为的最简洁的方式。

那么,有什么方法可以升级软件包并替换旧版本,其新版本存在但它仍然不在分发存储库中?我找到了 libpng 的 ubuntu 存储库以及如何在 linux 中升级从源代码构建的包?. 虽然到目前为止还不是很确定。

0 投票
1 回答
156 浏览

c++ - 如何在另一个 png 上绘制一个 png?

如何使用libpng“绘制”\“合并”另一个png(背景)的png顶部,同时保持png的alpha部分绘制在背景png的顶部。似乎没有任何教程或文档中提到的任何内容。

0 投票
1 回答
1495 浏览

linker - 尝试在 Linux 上制作 pngnq 时出现链接到 libpng 的问题

我正在尝试安装pngnq,它依赖于libpng >= 1.2.8。我已经通过, ,安装了libpng1.5.7 (没有问题),因为软件中心的版本太旧了。我现在正在尝试通过, ,安装(同样,因为软件中心版本太旧了),但是在我认为与链接有关的错误消息的步骤中遇到了困难。错误消息的一小部分示例:./configuremakesudo make installlibpngpngnq./configuremakesudo make installmakelibpng

我在 Linux 上手动安装软件的经验有限,因此我不确定下一步是什么来诊断问题。我已经进行了大量搜索,但还没有真正找到针对我遇到的问题的任何内容。基于关于类似问题的论坛帖子,我做了一个ls目录/usr/local/lib并发现:

虽然我不知道这是否真的有助于诊断/排除某些问题。谁能告诉我可能出了什么问题,保持我在 Linux 上编译代码的最低经验?

编辑:

make根据要求,以下是从调用开始的跟踪示例:

0 投票
2 回答
3364 浏览

qt - 在 Qt 中与 libpng 链接

我正在尝试编译一个同时使用 Qt 框架和 libpng 的项目。我在使用以前版本的 libpng 时遇到错误,因此我下载了更新的代码库,现在在尝试构建项目时出现以下错误:

我怀疑包含的 libpng 源和 mingw 编译的源之间的版本一定有问题,但我真的不能说。我究竟做错了什么?

0 投票
2 回答
2046 浏览

c++ - 哪个更慢,jpeg 还是 png?

想知道,这两种图像的解压缩过程是否存在显着差异,JPEG或PNG哪个更慢?

0 投票
1 回答
8065 浏览

xcode - MacOSX下libpng的链接器错误

我正在使用 MacOSX 10.7.2 和 Xcode 4.2.1。我libpng使用端口安装并尝试在我的应用程序中加载 PNG 图像,但出现链接器错误:

我包含png.h在我的项目中使用

我知道libpng基于zlib,因此我已将其包含-lz在“其他链接器标志”中,但没有任何改变。

有关如何使其工作的任何建议?

0 投票
1 回答
2056 浏览

c++ - libpng png_set_add_alpha | png_set_filler 错误:顺序行溢出

我正在尝试使用 C 读取 PNG 文件以与 OpenCL 一起使用。OpenCL 不支持 24 位 RGB 图像,因此我需要将数据从 RGB 扩展为 RGBA。我使用的 PNG 都是 24 位的,因此可以避免头痛。

我尝试使用 png_set_filler 和 png_set_add_alpha ,我认为它们与解决问题大致相同,但它们都会导致此错误:

这是完整的功能:

谢谢。

0 投票
2 回答
1683 浏览

c - PNG文件中sBIT块的用途是什么?

实际上,我不明白在 PNG 文件中使用 sBIT 块。

我正在存储来自 11 位/通道 RGB 源的 PNG 文件,因此我尽职尽责地在 (c) 代码中设置了 sBIT 块:

当使用 windows 查看器(原生 Vista 图片查看器/Paint.net)查看图像时,低 8 位被截断,所以我只能看到高 3 位。我原以为该sBIT块会自动指示读者将像素左移 5 位,以使 MSB 证明数据显示的合理性。似乎并非如此。

当我在代码中打开具有或不具有 sBIT 块的 png 文件时,请执行以下操作:

像素数据相同。

sBIT块的使用模型是什么?我可以以某种方式使用该sBIT块来证明像素数据的正确性以供查看,但查看“原始”数据进行数值分析吗?