GDCM
3.0.24
ExtractIconFromFile.cxx
/*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*
* This example shows how to either retrieve an Icon if present somewhere
* in the file, or else generate one.
*/
#include "
gdcmImageReader.h
"
#include "
gdcmPNMCodec.h
"
#include "
gdcmIconImageFilter.h
"
#include "
gdcmIconImageGenerator.h
"
bool
WriteIconAsPNM(
const
char
* filename,
const
gdcm::IconImage
& icon)
{
gdcm::PNMCodec
pnm;
pnm.
SetDimensions
( icon.
GetDimensions
() );
pnm.
SetPixelFormat
( icon.
GetPixelFormat
() );
pnm.
SetPhotometricInterpretation
( icon.
GetPhotometricInterpretation
() );
pnm.
SetLUT
( icon.
GetLUT
() );
const
gdcm::DataElement
& in = icon.
GetDataElement
();
bool
b = pnm.
Write
( filename, in );
assert( b );
return
b;
}
int
main(
int
argc,
char
*argv [])
{
if
( argc < 2 )
return
1;
const
char
*filename = argv[1];
gdcm::ImageReader
reader;
reader.
SetFileName
( filename );
if
( !reader.
Read
() )
{
std::cerr <<
"Failed to read (or not image): "
<< filename << std::endl;
return
1;
}
gdcm::IconImageFilter
iif;
iif.
SetFile
( reader.
GetFile
() );
bool
b = iif.
Extract
();
if
( b )
{
const
gdcm::IconImage
&icon = iif.
GetIconImage
(0);
icon.
Print
( std::cout );
if
( !icon.
GetTransferSyntax
().
IsEncapsulated
() )
{
// Let's write out this icon as PNM file
WriteIconAsPNM(
"icon.ppm"
, icon);
}
else
if
( icon.
GetTransferSyntax
() ==
gdcm::TransferSyntax::JPEGBaselineProcess1
|| icon.
GetTransferSyntax
() ==
gdcm::TransferSyntax::JPEGExtendedProcess2_4
)
{
const
gdcm::DataElement
& in = icon.
GetDataElement
();
const
gdcm::ByteValue
*bv = in.
GetByteValue
();
assert( bv );
std::ofstream out(
"icon.jpg"
, std::ios::binary );
out.write( bv->
GetPointer
(), bv->
GetLength
() );
out.close();
}
}
else
{
assert( iif.
GetNumberOfIconImages
() == 0 );
std::cerr <<
"No Icon Found anywhere in file"
<< std::endl;
const
gdcm::Image
&img = reader.
GetImage
();
gdcm::IconImageGenerator
iig;
iig.
AutoPixelMinMax
(
true
);
iig.
SetPixmap
( img );
const
unsigned
int
idims[2] = { 64, 64 };
iig.
SetOutputDimensions
( idims );
//iig.SetPixelMinMax(60, 868);
if
( !iig.
Generate
() )
return
1;
const
gdcm::IconImage
& icon = iig.
GetIconImage
();
WriteIconAsPNM(
"icon.ppm"
, icon);
}
return
0;
}
gdcm::Bitmap
Bitmap class.
Definition
gdcmBitmap.h:39
gdcm::Bitmap::GetLUT
const LookupTable & GetLUT() const
Definition
gdcmBitmap.h:87
gdcm::Bitmap::GetPixelFormat
const PixelFormat & GetPixelFormat() const
Get/Set PixelFormat.
Definition
gdcmBitmap.h:107
gdcm::Bitmap::GetPhotometricInterpretation
const PhotometricInterpretation & GetPhotometricInterpretation() const
return the photometric interpretation
gdcm::Bitmap::GetDataElement
const DataElement & GetDataElement() const
Definition
gdcmBitmap.h:79
gdcm::Bitmap::Print
void Print(std::ostream &) const override
gdcm::Bitmap::GetDimensions
const unsigned int * GetDimensions() const
Return the dimension of the pixel data, first dimension (x), then 2nd (y), then 3rd (z)....
gdcm::Bitmap::GetTransferSyntax
const TransferSyntax & GetTransferSyntax() const
Definition
gdcmBitmap.h:72
gdcm::ByteValue
Class to represent binary value (array of bytes)
Definition
gdcmByteValue.h:35
gdcm::ByteValue::GetPointer
const char * GetPointer() const
Definition
gdcmByteValue.h:110
gdcm::ByteValue::GetLength
VL GetLength() const override
Definition
gdcmByteValue.h:77
gdcm::DataElement
Class to represent a Data Element either Implicit or Explicit.
Definition
gdcmDataElement.h:59
gdcm::DataElement::GetByteValue
const ByteValue * GetByteValue() const
Definition
gdcmDataElement.h:133
gdcm::IconImageFilter
IconImageFilter.
Definition
gdcmIconImageFilter.h:50
gdcm::IconImageFilter::GetNumberOfIconImages
unsigned int GetNumberOfIconImages() const
Retrieve extract IconImage (need to call Extract first)
gdcm::IconImageFilter::SetFile
void SetFile(const File &f)
Set/Get File.
Definition
gdcmIconImageFilter.h:56
gdcm::IconImageFilter::GetIconImage
IconImage & GetIconImage(unsigned int i) const
gdcm::IconImageFilter::Extract
bool Extract()
Extract all Icon found in File.
gdcm::IconImageGenerator
IconImageGenerator.
Definition
gdcmIconImageGenerator.h:42
gdcm::IconImageGenerator::SetPixmap
void SetPixmap(const Pixmap &p)
Set/Get File.
Definition
gdcmIconImageGenerator.h:48
gdcm::IconImageGenerator::SetOutputDimensions
void SetOutputDimensions(const unsigned int dims[2])
Set Target dimension of output Icon.
gdcm::IconImageGenerator::Generate
bool Generate()
Generate Icon.
gdcm::IconImageGenerator::GetIconImage
const IconImage & GetIconImage() const
Retrieve generated Icon.
Definition
gdcmIconImageGenerator.h:80
gdcm::IconImageGenerator::AutoPixelMinMax
void AutoPixelMinMax(bool b)
gdcm::ImageCodec::SetDimensions
void SetDimensions(const unsigned int d[3])
gdcm::ImageCodec::SetPixelFormat
virtual void SetPixelFormat(PixelFormat const &pf)
Definition
gdcmImageCodec.h:70
gdcm::ImageCodec::SetLUT
void SetLUT(LookupTable const &lut)
Definition
gdcmImageCodec.h:89
gdcm::ImageCodec::SetPhotometricInterpretation
void SetPhotometricInterpretation(PhotometricInterpretation const &pi)
gdcm::ImageReader
ImageReader.
Definition
gdcmImageReader.h:34
gdcm::ImageReader::GetImage
const Image & GetImage() const
Return the read image.
gdcm::ImageReader::Read
bool Read() override
gdcm::Image
Image.
Definition
gdcmImage.h:47
gdcm::PNMCodec
Class to do PNM.
Definition
gdcmPNMCodec.h:30
gdcm::PNMCodec::Write
bool Write(const char *filename, const DataElement &out) const
gdcm::Reader::GetFile
const File & GetFile() const
Set/Get File.
Definition
gdcmReader.h:72
gdcm::Reader::SetFileName
void SetFileName(const char *filename_native)
gdcm::TransferSyntax::IsEncapsulated
bool IsEncapsulated() const
gdcm::TransferSyntax::JPEGBaselineProcess1
@ JPEGBaselineProcess1
Definition
gdcmTransferSyntax.h:67
gdcm::TransferSyntax::JPEGExtendedProcess2_4
@ JPEGExtendedProcess2_4
Definition
gdcmTransferSyntax.h:68
gdcmIconImageFilter.h
gdcmIconImageGenerator.h
gdcmImageReader.h
gdcmPNMCodec.h
Generated by
1.9.8