- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 ImageMagick 的 C++ API Magick++ 创建带有 JPEG 压缩的 TIFF 图像时遇到问题。当我按以下方式使用转换工具时,它起作用了:
convert 1.jpg -compress JPEG 1.tiff
当我想在 C++ 中做同样的事情时,它看起来像这样:
Image img("1.jpg");
img.compressType(JPEGCompression);
img.write("1.tiff");
但这段代码不有效。它在尝试生成文件“1.tiff”时抛出异常:
Unhandled exception at 0x74ecb727 in test.exe: Microsoft C++ exception: Magick::ErrorCoder at memory location 0x002ffc2c..
指向文件Thread.cpp中的103行
这是错误还是我的代码有问题?
更新
我把代码改成了这样:
try{
Image img(Desktop+"1.jpg");
img.compressType(JPEGCompression);
img.write(Desktop+"1.tiff");
}catch(Exception e){
cout << e.what() << endl;
}
输出:test.exe: CompressionNotSupported ‘JPEG’ @ error/tiff.c/WriteTIFFImage/2611
所以……好像不支持。问题是:为什么他转换工具支持呢?有人知道这样做的方法吗?
更新
我创建了一个空的新项目,重新编译了 ImageMagick,然后添加了以下设置:
其他包含目录:
c:/imagemagick/magick++/lib;c:/imagemagick/
额外的库目录:
c:/imagemagick/visualmagick/lib/
库:
CORE_RL_bzlib_.lib;CORE_RL_coders_.lib;CORE_RL_filters_.lib;CORE_RL_jbig_.lib;CORE_RL_jp2_.lib;CORE_RL_jpeg_.lib;CORE_RL_lcms_.lib;CORE_RL_libxml_.lib;CORE_RL_magick_.lib;CORE_RL_Magick++_.lib;CORE_RL_png_.lib;CORE_RL_tiff_.lib;CORE_RL_ttf_.lib;CORE_RL_wand_.lib;CORE_RL_xlib_.lib;CORE_RL_zlib_.lib;CORE_RL_wmf_.lib;X11.lib;Xext.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;wsock32.lib;winmm.lib;
然后尝试运行以下代码:
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
int main() {
Image img("c:/users/patrik stutz/Desktop/1.jpg");
img.compressType(JPEGCompression);
img.write("c:/users/patrik stutz/Desktop/1.tiff");
return 0;
}
成功了!!全部使用VS2010。我不知道为什么它在我的其他具有相同设置的项目中不起作用...
最佳答案
根据 ImageMagick Image Formats你需要 jpegsrc.v8c.tar.gz对于 jpeg 支持。您必须链接 libjpeg
和 libtiff
才能使其正常工作。您可以使用此命令创建所有必要的链接器标志:
Magick++-config --cppflags --cxxflags --ldflags --libs
对我来说,下面的代码是有效的:
#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;
int main() {
Image img("1.jpg");
img.compressType(JPEGCompression);
img.write("1.tiff");
return 0;
}
使用这个编译命令:
g++ -L/usr/lib -L/usr/lib/X11 -o"testim" ./src/testim.o -lMagick++ -lMagickWand -lMagickCore -llcms -ltiff -lfreetype -ljpeg -llqr-1 -lglib-2.0 -lfontconfig -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz -lm -lgomp -lpthread -lltdl
更新:我刚刚看到您的错误是由您的 tiff 库引起的。 ImageMagick 使用 TIFFGetConfiguredCODECs()
获取支持的压缩编解码器。所以你的 tiff 库必须支持 JPEG 压缩。也许您可以尝试更新您的 tiff 库。
关于c++ - Magick++ - JPEG 压缩的 TIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146827/
我在我的大学从事图像预处理项目,并使用图像魔术脚本来清理图像背景。现在我想通过 Magick++(imageMagick 的 c++ api)获得相同的输出。 ImageMagick 命令:"conv
美好的一天,这是我的代码 #include #include using namespace std; using namespace Magick; int main(int argc, cha
我使用 ImageMagick(command Line) 以下列方式将基于 CMYK 的图像转换为基于 RGB 的图像: convert.exe -profile icc:JapanColor200
升级到最新的 ImageMagick/Magick.NET (7.0.2.901),它在本地构建和运行良好,但在服务器上因此错误而爆炸。 Unable to find an entry point n
在我的第一个 magick++ 项目中,我试图读取图像、旋转它并保存它。 这是来源: #include #include #include using namespace std; using
我想在 Android 上编译 C++ 版本的 ImageMagick,Magick++ 文档看起来很简单,但没有显示兼容格式(如 jpeg、gif 等)的明确列表,以及是否需要安装 libjpeg、
我想围绕图像中的某个点旋转图像。我正在使用魔法++。如何选择旋转轴?有旋转功能,但它只允许我设置度数而不能选择轴。 最佳答案 您需要创建一个仿射变换来映射旋转和过渡。示例... Magick::Ima
#include #include int main() { Magick::InitializeMagick(NULL); Magick::Image im; im.re
我正在尝试将用于模糊蒙版的 ImageMagick 命令转换为 Magick++ API。 ImageMagick: convert -size 720x478 xc: -sparse-color B
我正在使用 Magick++ 加载一些图像。因为我想为所有图像加载包装 PhysFS,所以我需要通过 blob 而不是文件路径加载图像。 这段代码: Magick::Image test("p
我正在尝试使用 Magick++ 将 PNG 的 channel 位深度从 8 减少到 4。我正在使用以下代码来执行此操作: Image * img = new Image("./image8.png
如何在 C++ 中使用 ImageMagick 创建渐变? 我正在尝试创建 WAV 文件的可视化表示。 我可以使用 Magick++ 创建图像,绘制波形数据并将图像保存为 .png 文件,但它看起来仍
所以现在已经 4 个小时了,我一直在努力让 Magick++ 工作。出于某种原因,我从来没有想过外部库可以毫无问题地工作。通常需要大约六个小时的纯时间谷歌搜索。 在经历了很多痛苦之后,我终于成功地完成
我在使用 Magick++ 时遇到奇怪的错误。在调用方法 write() 的行中发生错误。当我像这样使用这种方法时: Image image( "176x144", "white" ); image.
我这里有一个使用 Magick++(ImageMagick 接口(interface))库的简单图像转换器代码。(Eclipse IDE) #include #include #include
我需要第 100 次卸载 Image Magick,因为我缺少委托(delegate)库。源文件夹在哪里找到以便我可以“卸载”它?有默认位置吗?运行对 ImageMagick 的搜索只返回二进制文件夹
我正在使用 Image::Magick修改我的图像。然后我使用 HTTP::Request将图像内容发送到 API。 HTTP::Request 有一个 content 方法,允许您为请求设置内容,但
我尝试使用 Image Magick 从几个小 png 创建一个新的大 png,但较小的图像没有保留其透明度。我正在创建一个 6000x6000 的图像并将较小的 png 放置在特定位置,其中一些被旋
我有一台能拍摄3008x2000像素照片的相机。我使用Image Magick缩放和调整要放在我的网站上的照片。我在网站上使用的图像尺寸为602x400。我使用此命令来减小大小: convert DS
我有两张图片(第一张大,第二张小且透明)。我需要在第一个图像的中心添加第二个图像并将结果另存为一个新文件。 如何使用 Perl 实现 Image::Magick ? 最佳答案 use strict;
我是一名优秀的程序员,十分优秀!