author | alwin <alwin> | 2004-11-01 13:33:51 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-11-01 13:33:51 (UTC) |
commit | 915af02212ea80e43da5bcc24415e3e48778bea9 (patch) (side-by-side diff) | |
tree | eff6dbcc2f1e62dfbb8f6ababe183306fe2077e1 /noncore | |
parent | b3153506a1be76a386f23a3af44f84042d148111 (diff) | |
download | opie-915af02212ea80e43da5bcc24415e3e48778bea9.zip opie-915af02212ea80e43da5bcc24415e3e48778bea9.tar.gz opie-915af02212ea80e43da5bcc24415e3e48778bea9.tar.bz2 |
when jpeg image is smaller than requested thumbsize it will not use
scaled loading
-rw-r--r-- | noncore/graphics/opie-eye/slave/jpeg_slave.cpp | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/noncore/graphics/opie-eye/slave/jpeg_slave.cpp b/noncore/graphics/opie-eye/slave/jpeg_slave.cpp index fb7d5de..1bb81d9 100644 --- a/noncore/graphics/opie-eye/slave/jpeg_slave.cpp +++ b/noncore/graphics/opie-eye/slave/jpeg_slave.cpp @@ -14,5 +14,5 @@ using namespace Opie::Core; /** - exif.h + exif.h */ @@ -267,5 +267,5 @@ int ExifData::ReadJpegSections (QFile & infile, ReadMode_t ReadMode) if (a >= 6){ - owarn << "too many padding bytes" << oendl; + owarn << "too many padding bytes" << oendl; return false; @@ -332,12 +332,12 @@ int ExifData::ReadJpegSections (QFile & infile, ReadMode_t ReadMode) case M_EOI: // in case it's a tables-only JPEG stream - owarn << "No image in jpeg!" << oendl; + owarn << "No image in jpeg!" << oendl; return false; case M_COM: // Comment section - // pieczy 2002-02-12 - // now the User comment goes to UserComment - // so we can store a Comment section also in READ_EXIF mode - process_COM(Data, itemlen); + // pieczy 2002-02-12 + // now the User comment goes to UserComment + // so we can store a Comment section also in READ_EXIF mode + process_COM(Data, itemlen); break; @@ -548,5 +548,5 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa case TAG_MODEL: ExifData::CameraModel = QString((char*)ValuePtr); - break; + break; case TAG_ORIENTATION: @@ -555,5 +555,5 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa case TAG_DATETIME_ORIGINAL: - DateTime = QString((char*)ValuePtr); + DateTime = QString((char*)ValuePtr); break; @@ -590,5 +590,5 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa // Simplest way of expressing aperture, so I trust it the most. // (overwrite previously computd value if there is one) - ExifData::ApertureFNumber = (float)ConvertAnyFormat(ValuePtr, Format); + ExifData::ApertureFNumber = (float)ConvertAnyFormat(ValuePtr, Format); break; @@ -667,10 +667,10 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa case TAG_EXPOSURE_BIAS: - ExifData::ExposureBias = (float)ConvertAnyFormat(ValuePtr, Format); - break; + ExifData::ExposureBias = (float)ConvertAnyFormat(ValuePtr, Format); + break; case TAG_WHITEBALANCE: ExifData::Whitebalance = (int)ConvertAnyFormat(ValuePtr, Format); - break; + break; case TAG_METERING_MODE: @@ -721,8 +721,8 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa if (DIR_ENTRY_ADDR(DirStart, NumDirEntries) + 4 <= OffsetBase+ExifLength){ Offset = Get32u(DIR_ENTRY_ADDR(DirStart, NumDirEntries)); - // There is at least one jpeg from an HP camera having an Offset of almost MAXUINT. - // Adding OffsetBase to it produces an overflow, so compare with ExifLength here. - // See http://bugs.kde.org/show_bug.cgi?id=54542 - if (Offset && Offset < ExifLength){ + // There is at least one jpeg from an HP camera having an Offset of almost MAXUINT. + // Adding OffsetBase to it produces an overflow, so compare with ExifLength here. + // See http://bugs.kde.org/show_bug.cgi?id=54542 + if (Offset && Offset < ExifLength){ SubdirStart = OffsetBase + Offset; if (SubdirStart > OffsetBase+ExifLength){ @@ -731,5 +731,5 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa // As Jhead produces this form of format incorrectness, // I'll just let it pass silently - owarn << "Thumbnail removed with Jhead 1.3 or earlier" << oendl; + owarn << "Thumbnail removed with Jhead 1.3 or earlier" << oendl; }else{ return; @@ -749,5 +749,5 @@ void ExifData::ProcessExifDir(unsigned char * DirStart, unsigned char * OffsetBa if (ThumbnailSize + ThumbnailOffset <= ExifLength){ // The thumbnail pointer appears to be valid. Store it. - Thumbnail.loadFromData(OffsetBase + ThumbnailOffset, ThumbnailSize, "JPEG"); + Thumbnail.loadFromData(OffsetBase + ThumbnailOffset, ThumbnailSize, "JPEG"); } } @@ -918,5 +918,5 @@ bool ExifData::scan(const QString & path) if (ret == false){ - owarn << "Not JPEG file!" << oendl; + owarn << "Not JPEG file!" << oendl; DiscardData(); f.close(); @@ -1416,9 +1416,17 @@ QString JpegSlave::fullImageInfo( const QString& path) { QPixmap JpegSlave::pixmap( const QString& path, int wid, int hei) { ExifData ImageInfo; + /* + */ if ( !ImageInfo.scan( path ) || ImageInfo.isNullThumbnail() ) { QImage img; QImageIO iio( path, 0l ); - QString str = QString( "Fast Shrink( 4 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); - iio.setParameters( str.latin1() );// will be strdupped anyway + if (wid < ImageInfo.getWidth() || hei<ImageInfo.getHeight()) { + odebug << "Scaling "<<ImageInfo.getWidth()<<"x"<<ImageInfo.getHeight() + << " to "<<wid<<"x"<<hei<< " ("<<path<<")"<<oendl; + QString str = QString( "Fast Shrink( 4 ) Scale( %1, %2, ScaleFree)" ).arg( wid ).arg( hei ); + iio.setParameters( str.latin1() );// will be strdupped anyway + } else { + odebug << "Not scaling "<<ImageInfo.getWidth()<<"x"<<ImageInfo.getHeight()<< " ("<<path<<")"<<oendl; + } img = iio.read() ? iio.image() : QImage(); return ThumbNailTool::scaleImage( img, wid,hei ); |