本文整理汇总了C++中ExifData::getISOequivalent方法的典型用法代码示例。如果您正苦于以下问题:C++ ExifData::getISOequivalent方法的具体用法?C++ ExifData::getISOequivalent怎么用?C++ ExifData::getISOequivalent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExifData
的用法示例。
在下文中一共展示了ExifData::getISOequivalent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadPicture
bool ScImgDataLoader_JPEG::loadPicture(const QString& fn, int /*page*/, int res, bool thumbnail)
{
bool isCMYK = false;
bool fromPS = false;
float xres = 72.0, yres = 72.0;
if (!QFile::exists(fn))
return false;
ExifData ExifInf;
struct jpeg_decompress_struct cinfo;
struct my_error_mgr jerr;
FILE *infile;
cinfo.err = jpeg_std_error (&jerr.pub);
jerr.pub.error_exit = my_error_exit;
infile = NULL;
initialize();
m_imageInfoRecord.type = ImageTypeJPG;
m_imageInfoRecord.exifInfo.thumbnail = QImage();
if (setjmp (jerr.setjmp_buffer))
{
jpeg_destroy_decompress (&cinfo);
if (infile)
fclose (infile);
return false;
}
jpeg_create_decompress (&cinfo);
if ((infile = fopen (fn.toLocal8Bit(), "rb")) == NULL)
return false;
jpeg_stdio_src(&cinfo, infile);
jpeg_save_markers(&cinfo, ICC_MARKER, 0xFFFF);
jpeg_save_markers(&cinfo, PHOTOSHOP_MARKER, 0xFFFF);
jpeg_read_header(&cinfo, true);
jpeg_start_decompress(&cinfo);
bool exi = ExifInf.scan(fn);
if ((exi) && (ExifInf.exifDataValid))
{
if (cinfo.output_components == 4)
m_imageInfoRecord.colorspace = ColorSpaceCMYK;
else if (cinfo.output_components == 3)
m_imageInfoRecord.colorspace = ColorSpaceRGB;
else if (cinfo.output_components == 1)
m_imageInfoRecord.colorspace = ColorSpaceGray;
if ((!ExifInf.Thumbnail.isNull()) && thumbnail)
{
m_image = ExifInf.getThumbnail();
m_imageInfoRecord.exifInfo.thumbnail = ExifInf.getThumbnail();
if (cinfo.output_components == 4)
{
QRgb *s;
unsigned char cc, cm, cy, ck;
for( int yit=0; yit < m_image.height(); ++yit )
{
s = (QRgb*)(m_image.scanLine( yit ));
for(int xit=0; xit < m_image.width(); ++xit )
{
cc = 255 - qRed(*s);
cm = 255 - qGreen(*s);
cy = 255 - qBlue(*s);
ck = qMin(qMin(cc, cm), cy);
*s = qRgba(cc-ck,cm-ck,cy-ck,ck);
s++;
}
}
}
}
else
m_imageInfoRecord.exifInfo.thumbnail = QImage();
m_imageInfoRecord.exifInfo.cameraName = ExifInf.getCameraModel();
m_imageInfoRecord.exifInfo.cameraVendor = ExifInf.getCameraMake();
m_imageInfoRecord.exifInfo.comment = ExifInf.getComment();
m_imageInfoRecord.exifInfo.width = ExifInf.getWidth();
m_imageInfoRecord.exifInfo.height = ExifInf.getHeight();
m_imageInfoRecord.exifInfo.userComment = ExifInf.getUserComment();
m_imageInfoRecord.exifInfo.dateTime = ExifInf.getDateTime();
m_imageInfoRecord.exifInfo.ApertureFNumber = ExifInf.getApertureFNumber();
m_imageInfoRecord.exifInfo.ExposureTime = ExifInf.getExposureTime();
m_imageInfoRecord.exifInfo.ISOequivalent = ExifInf.getISOequivalent();
m_imageInfoRecord.exifDataValid = true;
if (cinfo.density_unit == 0)
{
xres = 72;
yres = 72;
}
else if ( cinfo.density_unit == 1 )
{
xres = cinfo.X_density;
yres = cinfo.Y_density;
}
else if ( cinfo.density_unit == 2 )
{
xres = cinfo.X_density * 2.54;
yres = cinfo.Y_density * 2.54;
}
if( xres <= 1.0 || yres <= 1.0 || xres > 3000.0 || yres > 3000.0 )
{
xres = yres = 72.0;
QFileInfo qfi(fn);
m_message = QObject::tr("%1 may be corrupted : missing or wrong resolution tags").arg(qfi.fileName());
m_msgType = warningMsg;
}
//.........这里部分代码省略.........