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

How can I pass TIFF image data to JUCE (which does not support TIFF)?

本文关键字:TIFF JUCE 不支持 数据 图像      更新时间:2023-10-16

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

google之后我得到了libtiff。

我的问题是显示这个的准确方法是什么。我是否需要将。tiff文件转换为jpeg/png从tiff这样做。

但是我认为这需要重复处理。

谁能解释一下原始/原生/基本图像文件格式,以便我需要将所有图像转换为该类型并直接使用它。

我在winAPI中发现了一些东西,用于处理图像,其中他们使用文件格式的图像数据。

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

谁能解释一下原始/原生/基本图像文件格式,以便我需要将所有图像转换为该类型并直接使用它。

没有"原生"图像文件格式,但RGB很接近(特别是如果你去掉标题,只给出一个Width×Height×Channels像素值数组)。您可能不希望使用它来存储所有内容,因为您的缓冲区将非常大。让你的库处理存储

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

没有"the"方法。c++本身并没有提到任何关于图像的内容,并且有很多方法可以使用它们。您的设计将取决于您的功能需求规范和可用的库。

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

google之后我得到了libtiff。

我的问题是显示这个的准确方法是什么。我是否需要将。tiff文件从tiff转换为jpeg/png这个。

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

如果您的意思是使用libtiff将tiff格式的图像转换为JUCE支持的格式,那么您说这会引入额外的初始处理步骤是对的。然而,正如你所说的那样,听起来任何可能的性能损失都将被简单性和清晰度的好处大大抵消。所以我要这样做

为了读取*.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&输入)"是您需要libtiff之类的东西的关键。在JUCE源代码树中,您将在文件夹 JUCE srcguigraphicsimaging

中找到PNG和其他支持格式的实现。

关于扩展JUCE功能的更多信息可以在JUCE用户论坛中找到。

Juce可以很好地处理png, jpg和gif(非动画),它们可以从文件中读取,甚至可以使用BinaryBuilder"编译"。

例如用BinaryBuilder从编译后的c++中加载。

someImage = ImageFileFormat::loadFrom (AppResources::image_png, AppResources::image_pngSize);

查看氧气文档,它们很有帮助。使用BinaryBuilder编译图像的语法是:

./BinaryBuilder someFolder otherFolder ClassName