Scale podcast images down if they are too large.

This commit is contained in:
craig.p.drummond
2013-09-17 21:16:15 +00:00
committed by craig.p.drummond
parent e83334ca53
commit 4dd4fd31fc
3 changed files with 17 additions and 3 deletions

View File

@@ -258,7 +258,7 @@ const QPixmap & MusicLibraryItemPodcast::cover()
}
m_coverIsDefault = true;
QImage img=OnlineServicesModel::self()->requestImage(static_cast<OnlineService *>(parentItem())->id(), data(), QString(), m_imageUrl.toString(), // ??
m_fileName.left(m_fileName.length()-constExt.length()));
m_fileName.left(m_fileName.length()-constExt.length()), 300);
if (!img.isNull()) {
setCoverImage(img);

View File

@@ -367,8 +367,9 @@ static const char * constIdProperty="id";
static const char * constArtistProperty="artist";
static const char * constAlbumProperty="album";
static const char * constCacheProperty="cacheName";
static const char * constMaxSizeProperty="maxSize";
QImage OnlineServicesModel::requestImage(const QString &id, const QString &artist, const QString &album, const QString &url, const QString cacheName)
QImage OnlineServicesModel::requestImage(const QString &id, const QString &artist, const QString &album, const QString &url, const QString cacheName, int maxSize)
{
QString baseName=cacheName.isEmpty() ? Utils::cacheDir(id.toLower(), false)+Covers::encodeName(album.isEmpty() ? artist : (artist+" - "+album)) : cacheName;
for (int e=0; constExtensions[e]; ++e) {
@@ -387,6 +388,7 @@ QImage OnlineServicesModel::requestImage(const QString &id, const QString &artis
j->setProperty(constArtistProperty, artist);
j->setProperty(constAlbumProperty, album);
j->setProperty(constCacheProperty, cacheName);
j->setProperty(constMaxSizeProperty, maxSize);
connect(j, SIGNAL(finished()), this, SLOT(imageDownloaded()));
}
@@ -453,6 +455,17 @@ void OnlineServicesModel::imageDownloaded()
? Utils::cacheDir(id.toLower(), true)+Covers::encodeName(song.album.isEmpty() ? song.artist : (song.artist+" - "+song.album))
: cacheName)
+(jpeg ? ".jpg" : ".png");
int maxSize=j->property(constMaxSizeProperty).toInt();
if (maxSize>16) {
QImage img=QImage::fromData(data, jpeg ? "JPG" : "PNG");
if (!img.isNull() && (img.width()>maxSize || img.height()>maxSize)) {
img=img.scaled(maxSize, maxSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
img.save(fileName);
return;
}
}
QFile f(fileName);
if (f.open(QIODevice::WriteOnly)) {
f.write(data);

View File

@@ -66,7 +66,8 @@ public:
Action * unSubscribeAct() const { return unSubscribeAction; }
Action * refreshSubscriptionAct() const { return refreshSubscriptionAction; }
QImage requestImage(const QString &id, const QString &artist, const QString &album, const QString &url, const QString cacheName=QString());
QImage requestImage(const QString &id, const QString &artist, const QString &album, const QString &url,
const QString cacheName=QString(), int maxSize=-1);
public Q_SLOTS:
void stateChanged(const QString &name, bool state);