如何将TIFF图像数据传递给JUCE(不支持TIFF)?

时间:2011-10-19 10:49:59

标签: c++ juce

我正在使用c ++ JUCE库学习gui编程。该库支持图像文件格式(png,jpg)。但我想学习如何使用其他文件格式,例如tiff。

谷歌之后我得到了诽谤。

我的问题是显示这个的准确方法是什么。我是否需要将.tiff文件从tiff转换为jpeg / png才能执行此操作。

但我认为这需要双重处理。

任何人都可以解释原始/本机/基本图像文件格式,以便我需要将所有图像转换为该类型并直接使用它。

我在winAPI中找到了处理图像的方法,用于处理文件格式的图像数据。

如果有人能让我知道处理图像数据并显示图像数据的方法,将会非常有帮助。

3 个答案:

答案 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