Refractor ImageInfoData

This commit is contained in:
2022-04-08 12:36:13 +02:00
parent 5a8582c8b0
commit c7e36bd4d6
4 changed files with 99 additions and 47 deletions
+56 -30
View File
@@ -26,7 +26,7 @@ void loadExifEntry(ImageInfoData &info, ExifContent *content, ExifTag tag)
if(entry)
{
exif_entry_get_value(entry, val, sizeof(val));
info.append(StringPair(exif_tag_get_title(tag), QString(val)));
info.info.append({exif_tag_get_title(tag), val});
}
}
@@ -119,14 +119,49 @@ bool loadRAW(QString path, ImageInfoData &info, RawImage **image)
}
//info.append(StringPair(QObject::tr("Width"), QString::number(rawImg->width)));
//info.append(StringPair(QObject::tr("Height"), QString::number(rawImg->height)));
info.append(StringPair(QObject::tr("ISO"), QString::number(raw.imgdata.other.iso_speed)));
info.append(StringPair(QObject::tr("Shutter speed"), shutterSpeed));
info.info.append({QObject::tr("ISO"), QString::number(raw.imgdata.other.iso_speed)});
info.info.append({QObject::tr("Shutter speed"), shutterSpeed});
#if LIBRAW_MINOR_VERSION>=19
// info.append(StringPair(QObject::tr("Camera temperature"), QString::number(raw.imgdata.other.CameraTemperature)));
#endif
return true;
}
void loadFITSHeader(fitsfile *file, ImageInfoData &info)
{
int nexist;
int status = 0;
char key[FLEN_KEYWORD];
char val[FLEN_VALUE];
char comm[FLEN_COMMENT];
char strval[FLEN_VALUE];
QVariant var;
fits_get_hdrspace(file, &nexist, nullptr, &status);
for(int i=1; i<=nexist; i++)
{
fits_read_keyn(file, i, key, val, comm, &status);
fits_read_key(file, TSTRING, key, strval, nullptr, &status);
if(status == 0 || status == VALUE_UNDEFINED)
{
QString string(strval);
bool isint;
bool isdouble;
double vald = string.toDouble(&isdouble);
long long vall = string.toLongLong(&isint);
if(isint)
var = vall;
else if(isdouble)
var = vald;
else if(status == VALUE_UNDEFINED)
var = QVariant();
else
var = strval;
status = 0;
info.fitsHeader.append({key, var, comm});
}
}
}
bool loadFITS(QString path, ImageInfoData &info, RawImage **image)
{
if(!image)
@@ -171,8 +206,8 @@ bool loadFITS(QString path, ImageInfoData &info, RawImage **image)
size_t w = naxes[0];
size_t h = naxes[1];
info.append(StringPair(QObject::tr("Width"), QString::number(naxes[0])));
info.append(StringPair(QObject::tr("Height"), QString::number(naxes[1])));
info.info.append({QObject::tr("Width"), QString::number(naxes[0])});
info.info.append({QObject::tr("Height"), QString::number(naxes[1])});
for (int i=1; i==1 || i<=naxes[2]; i++)
{
@@ -195,24 +230,15 @@ bool loadFITS(QString path, ImageInfoData &info, RawImage **image)
}
}
int nheader = 0, more;
fits_get_hdrspace(file, &nheader, &more, &status);
for(int i=1; i<=nheader; i++)
{
char key[FLEN_KEYWORD];
char val[FLEN_VALUE];
char comm[FLEN_COMMENT];
fits_read_keyn(file, i, key, val, comm, &status);
info.append(StringPair(key, QString(val)));
}
loadFITSHeader(file, info);
fits_close_file(file, &status);
if(status)
{
char err[100];
fits_get_errstatus(status, err);
info.append(StringPair(QObject::tr("Error"), QString(err)));
info.info.append({QObject::tr("Error"), QString(err)});
qDebug() << err;
}
return true;
@@ -227,7 +253,7 @@ void LoadRunable::run()
QElapsedTimer timer;
ImageInfoData info;
QFileInfo finfo(m_file);
info.append(StringPair(QObject::tr("Filename"), finfo.fileName()));
info.info.append({QObject::tr("Filename"), finfo.fileName()});
RawImage *rawImage = nullptr;
bool raw = false;
@@ -246,8 +272,8 @@ void LoadRunable::run()
{
QImage img(m_file);
ExifData *exif = exif_data_new_from_file(m_file.toLocal8Bit().constData());
info.append(StringPair(QObject::tr("Width"), QString::number(img.width())));
info.append(StringPair(QObject::tr("Height"), QString::number(img.height())));
info.info.append({QObject::tr("Width"), QString::number(img.width())});
info.info.append({QObject::tr("Height"), QString::number(img.height())});
if(exif)
{
loadExifEntry(info, exif->ifd[EXIF_IFD_EXIF], EXIF_TAG_ISO_SPEED_RATINGS);
@@ -264,12 +290,12 @@ void LoadRunable::run()
timer.start();
rawImage->imageStats(&mean, &stdDev, &median, &min, &max, &mad);
qDebug() << "image stats" << timer.restart();
info.append(StringPair(QObject::tr("Mean"), QString::number(mean)));
info.append(StringPair(QObject::tr("Standart deviation"), QString::number(stdDev)));
info.append(StringPair(QObject::tr("Median"), QString::number(median)));
info.append(StringPair(QObject::tr("Minimum"), QString::number(min)));
info.append(StringPair(QObject::tr("Maximum"), QString::number(max)));
info.append(StringPair(QObject::tr("MAD"), QString::number(mad)));
info.info.append({QObject::tr("Mean"), QString::number(mean)});
info.info.append({QObject::tr("Standart deviation"), QString::number(stdDev)});
info.info.append({QObject::tr("Median"), QString::number(median)});
info.info.append({QObject::tr("Minimum"), QString::number(min)});
info.info.append({QObject::tr("Maximum"), QString::number(max)});
info.info.append({QObject::tr("MAD"), QString::number(mad)});
if(m_analyzeLevel >= Peaks)
{
@@ -286,8 +312,8 @@ void LoadRunable::run()
//if(m_analyzeLevel == Peaks)
// drawPeaks(img, peaks);
qDebug() << "draw peaks" << timer.restart();
info.append(StringPair(QObject::tr("Peaks"), QString::number(numPeaks)));
info.append(StringPair(QObject::tr("Peaks draw"), QString::number(peaks.size())));
info.info.append({QObject::tr("Peaks"), QString::number(numPeaks)});
info.info.append({QObject::tr("Peaks draw"), QString::number(peaks.size())});
if(m_analyzeLevel>= Stars)
{
@@ -315,8 +341,8 @@ void LoadRunable::run()
}
}
//drawStars(img, stars);
info.append(StringPair(QObject::tr("FWHM X"), QString::number(fwhmX/stars.size())));
info.append(StringPair(QObject::tr("FWHM Y"), QString::number(fwhmY/stars.size())));
info.info.append({QObject::tr("FWHM X"), QString::number(fwhmX/stars.size())});
info.info.append({QObject::tr("FWHM Y"), QString::number(fwhmY/stars.size())});
}
qDebug() << "Star fit" << timer.restart();
}