X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=libctsim%2Fimagefile.cpp;h=d10e1bd8a2d9eaaeb058c526800abaaa97a93b0b;hb=43abe0deafa57e335f2d08304b84cdf91542db5f;hp=9fa905725ec0883b269e3b072d95c1b946a94521;hpb=f90a2885fb7fa51e5c66a9a8b01f1fc6e1801b3c;p=ctsim.git diff --git a/libctsim/imagefile.cpp b/libctsim/imagefile.cpp index 9fa9057..d10e1bd 100644 --- a/libctsim/imagefile.cpp +++ b/libctsim/imagefile.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: imagefile.cpp,v 1.43 2001/03/28 16:53:43 kevin Exp $ +** $Id: imagefile.cpp,v 1.45 2001/09/24 09:40:42 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -46,6 +46,7 @@ const int ImageFile::EXPORT_FORMAT_PNG16 = 4; #ifdef HAVE_CTN_DICOM const int ImageFile::EXPORT_FORMAT_DICOM = 5; #endif +const int ImageFile::EXPORT_FORMAT_RAW = 6; const char* ImageFile::s_aszExportFormatName[] = { @@ -1667,6 +1668,9 @@ ImageFile::exportImage (const char* const pszFormat, const char* const pszFilena return bSuccess; } #endif + else if (iFormatID == EXPORT_FORMAT_RAW) + return writeImageRaw(pszFilename, nxcell, nycell); + sys_error (ERR_SEVERE, "Invalid format %s [ImageFile::exportImage]", pszFormat); return false; @@ -1815,7 +1819,7 @@ ImageFile::writeImagePNG (const char* const outfile, int bitdepth, int nxcell, i png_init_io(png_ptr, fp); - png_set_IHDR (png_ptr, info_ptr, nx * nxcell, ny * nycell, bitdepth, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_DEFAULT); + png_set_IHDR (png_ptr, info_ptr, nx * nxcell, ny * nycell, bitdepth, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_write_info(png_ptr, info_ptr); for (int irow = ny - 1; irow >= 0; irow--) { @@ -1900,3 +1904,26 @@ ImageFile::writeImageGIF (const char* const outfile, int nxcell, int nycell, dou } #endif +bool +ImageFile::writeImageRaw (const char* const outfile, int nxcell, int nycell) +{ + FILE *fp; + int nx = m_nx; + int ny = m_ny; + ImageFileArray v = getArray(); + + if ((fp = fopen (outfile, "wb")) == NULL) + return false; + + for (int irow = ny - 1; irow >= 0; irow--) { + for (int icol = 0; icol < nx; icol++) { + float dens = v[icol][irow]; + fwrite(&dens, sizeof(float), 1, fp); + } + } + + fclose(fp); + return true; +} + +