[Gdcm-hackers] gdcm-git:Grassroots DICOM branch master updated. c5bc892eba0652699d107f952dff156b101
Cross-platform DICOM implementation
Brought to you by:
malat
|
From: Mark R. <mm...@us...> - 2011-03-22 17:04:32
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Grassroots DICOM".
The branch, master has been updated
via c5bc892eba0652699d107f952dff156b101b1d0d (commit)
from 6be538ef2af86916c354b4561ab608b9dec3738d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://gdcm.git.sourceforge.net/git/gitweb.cgi?p=gdcm/gdcm;a=commit;h=c5bc892eba0652699d107f952dff156b101b1d0d
commit c5bc892eba0652699d107f952dff156b101b1d0d
Author: Mark Roden <mm...@gm...>
Date: Tue Mar 22 10:04:03 2011 -0700
attempts to fix stream image reader test
diff --git a/Source/MediaStorageAndFileFormat/gdcmStreamImageReader.cxx b/Source/MediaStorageAndFileFormat/gdcmStreamImageReader.cxx
index efde20a..af277ae 100644
--- a/Source/MediaStorageAndFileFormat/gdcmStreamImageReader.cxx
+++ b/Source/MediaStorageAndFileFormat/gdcmStreamImageReader.cxx
@@ -290,11 +290,13 @@ bool StreamImageReader::ReadImageInformation()
gdcmWarningMacro( "Failed to read with unknown error" );
}
+
// eg. ELSCINT1_PMSCT_RLE1.dcm
if( mFileOffset == -1 ) return false;
// postcondition
assert( mFileOffset != -1 );
+
return true;
}
@@ -310,7 +312,17 @@ bool StreamImageReader::CanReadImage() const{
//bool needbyteswap = (ts == TransferSyntax::ImplicitVRBigEndianPrivateGE);
RAWCodec theCodec;
- return theCodec.CanDecode(ts);
+ bool canDecodeRaw = theCodec.CanDecode(ts);
+ if (!canDecodeRaw) return false;
+
+ std::vector<unsigned int> extent = ImageHelper::GetDimensionsValue(mReader.GetFile());
+ if (extent.empty()) return false; //should not happen with current GetDimensionsValue implementation
+ //but just in case...
+
+ if (extent[0] == 0 || extent[1] == 0)
+ return false;
+
+ return true;
}
/// Returns the dataset read by ReadImageInformation
diff --git a/Testing/Source/MediaStorageAndFileFormat/Cxx/TestStreamImageReader.cxx b/Testing/Source/MediaStorageAndFileFormat/Cxx/TestStreamImageReader.cxx
index ac856d8..582b583 100644
--- a/Testing/Source/MediaStorageAndFileFormat/Cxx/TestStreamImageReader.cxx
+++ b/Testing/Source/MediaStorageAndFileFormat/Cxx/TestStreamImageReader.cxx
@@ -19,6 +19,7 @@
#include "gdcmTrace.h"
#include "gdcmTesting.h"
#include "gdcmImageHelper.h"
+#include "gdcmImageReader.h"
#include "gdcmImage.h"
#include "gdcmMediaStorage.h"
@@ -33,7 +34,12 @@ int TestStreamImageRead(const char* filename, bool verbose = false, bool lossydu
gdcm::StreamImageReader reader;
reader.SetFileName( filename );
- if ( reader.ReadImageInformation() )
+ bool canReadImageInformation = reader.ReadImageInformation();
+ if (!canReadImageInformation)
+ {
+ return 0; //unable to read tags as expected.
+ }
+ else
{
int res = 0;
@@ -55,6 +61,7 @@ int TestStreamImageRead(const char* filename, bool verbose = false, bool lossydu
reader.DefinePixelExtent(0, extent[0], 0, extent[1], 0, extent[2]);
unsigned long len = reader.DefineProperBufferLength();
char* finalBuffer = new char[len];
+ memset(finalBuffer, 0, sizeof(char)*len);
if (reader.CanReadImage()){
bool result = reader.Read(finalBuffer, len);
if( !result ){
@@ -127,11 +134,37 @@ int TestStreamImageRead(const char* filename, bool verbose = false, bool lossydu
{
// let's be nice for now and only truly fails when file is proper DICOM
- if( correct_ref ){
+ if( correct_ref )
+ {
std::cerr << "Problem reading image from: " << filename << std::endl;
std::cerr << "Found " << digest << " instead of " << ref << std::endl;
+ /*
+ //uncomment this code to explicitly read and check the md5 hash
+ gdcm::ImageReader reader;
+
+ reader.SetFileName( filename );
+ if (reader.Read())
+ {
+ const gdcm::Image &img = reader.GetImage();
+ //std::cerr << "Success to read image from file: " << filename << std::endl;
+ unsigned long len2 = img.GetBufferLength();
+
+ char* buffer2 = new char[len];
+ bool res3 = img.GetBuffer(buffer2);
+ if (res3)
+ {
+ char digest2[33];
+ gdcm::Testing::ComputeMD5(buffer2, len2, digest2);
+ if (strcmp(digest2, digest))
+ {
+ std::cerr << "Second check read " << digest2 << " not " << digest << std::endl;
+ }
+ }
+ delete [] buffer2;
+ }
+ */
res = 1;
- }
+ }
#if 0
std::ofstream debug("/tmp/dump.gray");
debug.write(finalBuffer, len);
@@ -141,12 +174,6 @@ int TestStreamImageRead(const char* filename, bool verbose = false, bool lossydu
delete[] finalBuffer;
return res;
}
- else
- {
-
- std::cerr << "Problem reading image information from: " << filename << std::endl;
- return 1;
- }
#if 0
const gdcm::FileMetaInformation &header = reader.GetFile().GetHeader();
-----------------------------------------------------------------------
Summary of changes:
.../gdcmStreamImageReader.cxx | 14 ++++++-
.../Cxx/TestStreamImageReader.cxx | 45 ++++++++++++++++----
2 files changed, 49 insertions(+), 10 deletions(-)
hooks/post-receive
--
Grassroots DICOM
|