Skip to content

File Image.h

File List > include > Image.h

Go to the documentation of this file

//=============================================================================
// Copyright (c) 2026 FLIR Integrated Imaging Solutions, Inc. All Rights Reserved.
//
// This software is the confidential and proprietary information of FLIR
// Integrated Imaging Solutions, Inc. ("Confidential Information"). You
// shall not disclose such Confidential Information and shall use it only in
// accordance with the terms of the license agreement you entered into
// with FLIR Integrated Imaging Solutions, Inc. (FLIR).
//
// FLIR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
// SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE, OR NON-INFRINGEMENT. FLIR SHALL NOT BE LIABLE FOR ANY DAMAGES
// SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
// THIS SOFTWARE OR ITS DERIVATIVES.
//=============================================================================

#ifndef FLIR_SPINNAKER_IMAGE_H
#define FLIR_SPINNAKER_IMAGE_H

#include "Interface/IImage.h"

#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4996)
#elif defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif

namespace Spinnaker
{
    class ImageStatistics;
    class ImagePtr;
    class ImageList;

    class SPINNAKER_API Image : public IImage
    {

      public:
        static ImagePtr Create();

        static ImagePtr Create(const ImagePtr image);

        static ImagePtr Create(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            Spinnaker::PixelFormatEnums pixelFormat,
            void* pData);

        static ImagePtr Create(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            PixelFormatEnums pixelFormat,
            void* pData,
            TLPayloadType dataPayloadType,
            size_t dataSize);

        virtual ~Image();

        ColorProcessingAlgorithm GetColorProcessing() const;

        void ResetImage(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            Spinnaker::PixelFormatEnums pixelFormat);

        void ResetImage(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            Spinnaker::PixelFormatEnums pixelFormat,
            void* pData);

        void ResetImage(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            PixelFormatEnums pixelFormat,
            void* pData,
            TLPayloadType dataPayloadType,
            size_t dataSize);

        /*
         * Releases an image that was acquired by calling camera->GetNextImage().
         *
         * @see Init()
         * @see CameraBase::GetNextImage( grabTimeout )
         */
        void Release();

        uint64_t GetID() const;

        uint64_t GetStreamIndex() const;

        GenICam::gcstring GetSerialNumber() const;

        void* GetData() const;

        float GetDataAbsoluteMax() const;

        float GetDataAbsoluteMin() const;

        void* GetPrivateData() const;

        size_t GetBufferSize() const;

        void DeepCopy(const ImagePtr pSrcImage);

        size_t GetWidth() const;

        size_t GetHeight() const;

        size_t GetStride() const;

        size_t GetBitsPerPixel() const;

        size_t GetNumChannels() const;

        size_t GetXOffset() const;

        size_t GetYOffset() const;

        size_t GetXPadding() const;

        size_t GetYPadding() const;

        uint64_t GetFrameID() const;

        ImagePayloadType GetImagePayloadType() const;

        size_t GetPayloadType() const;

        TLPayloadType GetTLPayloadType() const;

        uint64_t GetTLPixelFormat() const;

        TLPixelFormatNamespace GetTLPixelFormatNamespace() const;

        GenICam::gcstring GetPixelFormatName() const;

        Spinnaker::PixelFormatEnums GetPixelFormat() const;

        Spinnaker::PixelFormatIntType GetPixelFormatIntType() const;

        bool IsIncomplete() const;

        size_t GetValidPayloadSize() const;

        uint64_t GetChunkLayoutId() const;

        uint64_t GetTimeStamp() const;

        void Save(const char* pFilename, ImageFileFormat format = SPINNAKER_IMAGE_FILE_FORMAT_FROM_FILE_EXT) const;

        void Save(const char* pFilename, PNGOption& pOption) const;

        void Save(const char* pFilename, PPMOption& pOption) const;

        void Save(const char* pFilename, PGMOption& pOption) const;

        void Save(const char* pFilename, TIFFOption& pOption) const;

        void Save(const char* pFilename, JPEGOption& pOption) const;

        void Save(const char* pFilename, JPG2Option& pOption) const;

        void Save(const char* pFilename, BMPOption& pOption) const;

        void Save(const char* pFilename, GenDCOption& pOption) const;

        void Save(const char* pFilename, SIOption& pOption) const;

        static ImagePtr Load(const char* pFilename, ImageFileFormat format = SPINNAKER_IMAGE_FILE_FORMAT_FROM_FILE_EXT);

        bool HasChunkData() const;

        const ChunkData& GetChunkData() const;

        void CalculateStatistics(ImageStatistics& pStatistics);

        bool HasCRC() const;

        bool CheckCRC() const;

        size_t GetImageSize() const;

        bool IsInUse();

        ImageStatus GetImageStatus() const;

        static const char* GetImageStatusDescription(ImageStatus status);

        bool IsCompressed() const;

      protected:
        friend class IDataStream;
        friend class Stream;
        friend class ImageConverter;
        friend class ImageConverterIpp;
        friend class ImageImpl;
        friend class ImageListImpl;
        friend class ImageFiler;
        friend class ImageProcessorImpl;
        friend class ImageStatsCalculator;
        friend class ImageUtilityImpl;
        friend class ImageUtilityPolarizationImpl;
        friend class ImageUtilityPlanarImpl;
        friend class ImageUtilityStereoImpl;
        friend class SpinnakerGPUImpl;
        friend class Relay::SpinRelayReceiver;

        ImageData* GetImageData() const;

        Image();
        Image(const ImagePtr image);
        Image(size_t width, size_t height, size_t offsetX, size_t offsetY, PixelFormatEnums pixelFormat, void* pData);
        Image(
            size_t width,
            size_t height,
            size_t offsetX,
            size_t offsetY,
            PixelFormatEnums pixelFormat,
            void* pData,
            TLPayloadType payloadType,
            size_t payloadSize);

        ImagePtr CreateShared() const;
        void DeepCopy(const Image& pSrcImage);

        static ImagePtr LoadData(void* pData, size_t dataSize);
        void SaveData(void* pData, size_t dataSize);
        void RegisterImageReleaseEvent(EventHandler& evtHandlerToRegister, void* pData);

      private:
        ImageData* m_pImageData;
    };

} // namespace Spinnaker

#ifdef _MSC_VER
#pragma warning(pop)
#elif defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

#endif // FLIR_SPINNAKER_IMAGE_H