我正在使用c ++ JUCE库学习gui编程。该库支持图像文件格式(png,jpg)。但我想学习如何使用其他文件格式,例如tiff。
谷歌之后我得到了诽谤。
我的问题是显示这个的准确方法是什么。我是否需要将.tiff文件从tiff转换为jpeg / png才能执行此操作。
但我认为这需要双重处理。
任何人都可以解释原始/本机/基本图像文件格式,以便我需要将所有图像转换为该类型并直接使用它。
我在winAPI中找到了处理图像的方法,用于处理文件格式的图像数据。
如果有人能让我知道处理图像数据并显示图像数据的方法,将会非常有帮助。
答案 0 :(得分:1)
任何人都可以解释原始/本机/基本图像文件格式,以便我需要将所有图像转换为该类型并直接使用它。
没有“原生”图像文件格式,但RGB接近(特别是如果您将标题剥离以仅提供宽度×高度×通道像素值数组)。您可能不希望使用它来存储所有内容,因为您的缓冲区将非常大。让你的库处理存储。
如果有人能让我知道处理图像数据并显示图像数据的方法,将会非常有帮助。
没有“这种”方法。 C ++本身并没有对图像做任何说明,而且有很多方法可以用来处理它们。您的设计将取决于您的功能需求规范以及您可用的库。
我正在使用c ++ JUCE库学习gui编程。那 库支持图像文件格式(png,jpg)。但我想 学习如何使用其他文件格式,例如tiff。
谷歌之后我得到了诽谤。
我的问题是显示这个的准确方法是什么。 我是否需要将.tiff文件从tiff转换为jpeg / png 此
但我认为这需要双重处理。
如果您的意思是使用libtiff将TIFF格式图像转换为JUCE支持的格式,那么您说这引入了额外的初始处理步骤。然而,就你所说的而言,听起来任何可能的表现都会受到简单和清晰的好处的巨大,巨大和巨大的影响。所以我就这么做。
答案 1 :(得分:1)
为了做一些类似于读取* .tiff图像并在使用JUCE框架构建的应用程序中使用它们,我建议创建一个从基本接口ImageFileFormat派生的新类。
class MyTiffFormat : public ImageFileFormat
{
private:
MyTiffFormat( const MyTiffFormat& );
MyTiffFormat& operator=( const MyTiffFormat& );
public:
MyTiffFormat();
~MyTiffformat();
const String getFormatName();
bool canUnderStand();
Image decodeImage( InputStream& input );
bool writeImageToStream( const Image& source, OuptputStream& dest );
};
实现函数“Image decodeImage(InputSTeram& input)”是你需要像libtiff这样的东西。在JUCE源代码树中,您将找到PNG的实现以及文件夹中其他支持的格式: \ juce \ src \ gui \ graphics \ imaging
有关扩展JUCE功能的更多信息,请参阅JUCE user forum。
答案 2 :(得分:0)
Juce在pngs,jpgs和gifs(非动画)方面效果很好,可以从文件中读取,甚至可以用BinaryBuilder“编译”。
例如,使用BinaryBuilder从已编译的c ++加载它。
someImage = ImageFileFormat::loadFrom (AppResources::image_png, AppResources::image_pngSize);
查看doxygen文档,它们非常有用。使用BinaryBuilder编译图像的语法是:
./BinaryBuilder someFolder otherFolder ClassName