bool VWebUtils::replaceLocalImgWithWarningLabel(QString &p_html) { bool altered = false; QString label = QString("<span style=\"font-weight: bold; color: #FFFFFF; background-color: #EE0000;\">%1</span>") .arg(QObject::tr("Insert_Image_HERE")); int pos = 0; while (pos < p_html.size()) { int idx = p_html.indexOf(m_imgTagReg, pos); if (idx == -1) { break; } QString urlStr = m_imgTagReg.cap(1); QUrl imgUrl(urlStr); if (imgUrl.scheme() == "https" || imgUrl.scheme() == "http") { pos = idx + m_imgTagReg.matchedLength(); continue; } p_html.replace(idx, m_imgTagReg.matchedLength(), label); pos = idx + label.size(); altered = true; } return altered; }
void KryptoniteJobCoverDiscogs::parseImagesHtml( const QByteArray &data, const QVariant &payload ) { emit message( tr( "Parsing discogs.com images page" ), data ); // <div class="image"><a href="/viewimages?release=753791"><img src="http://s.pixogs.com/image/R-150-753791-1155372972.jpeg" alt="Revolverheld - Revolverheld" /> QRegExp imgRe1( ".*<img[^>]*class=\"shadow image_frame\"[^>]*src=\"([^\"]*)\".*" ); QRegExp imgRe2( ".*<div class=\"image\">.*<img[^>]*src=\"([^\"]*)\".*" ); QString s( QString::fromUtf8(data.constData()) ); QStringList l( s.split("\n", QString::SkipEmptyParts) ); foreach( s, l ) { if( s.contains( imgRe1 ) ) { QUrl imgUrl( QString(s).replace( imgRe1, "\\1" ) ); emit requestDownload( this, SIGNAL(imageDownloaded(QByteArray,QVariant)), imgUrl, payload ); return; } else if( s.contains( imgRe2 ) ) { QUrl imgUrl( QString(s).replace( imgRe2, "\\1" ) ); emit requestDownload( this, SIGNAL(imageDownloaded(QByteArray,QVariant)), imgUrl, payload ); return; } } }
bool VWebUtils::fixImageSrc(const QUrl &p_baseUrl, QString &p_html) { bool changed = false; #if defined(Q_OS_WIN) QUrl::ComponentFormattingOption strOpt = QUrl::EncodeSpaces; #else QUrl::ComponentFormattingOption strOpt = QUrl::FullyEncoded; #endif QRegExp reg("<img src=\"([^\"]+)\""); int pos = 0; while (pos < p_html.size()) { int idx = p_html.indexOf(reg, pos); if (idx == -1) { break; } QString urlStr = reg.cap(1); QUrl imgUrl(urlStr); QString fixedStr; if (imgUrl.isRelative()) { fixedStr = p_baseUrl.resolved(imgUrl).toString(strOpt); } else if (imgUrl.isLocalFile()) { fixedStr = imgUrl.toString(strOpt); } else if (imgUrl.scheme() != "https" && imgUrl.scheme() != "http") { QString tmp = imgUrl.toString(); if (QFileInfo::exists(tmp)) { fixedStr = QUrl::fromLocalFile(tmp).toString(strOpt); } } pos = idx + reg.matchedLength(); if (!fixedStr.isEmpty() && urlStr != fixedStr) { qDebug() << "fix img url" << urlStr << fixedStr; pos = pos + fixedStr.size() + 1 - urlStr.size(); p_html.replace(idx, reg.matchedLength(), QString("<img src=\"%1\"").arg(fixedStr)); changed = true; } } return changed; }
void KryptoniteJobCoverDiscogs::parseItemHtml( const QByteArray &data, const QVariant &payload ) { emit message( tr( "Parsing discogs.com item page" ), data ); //QRegExp imgRe( ".*<a href=\"([^\"]*)\">more images</a>.*" ); QRegExp imgRe( ".*<a href=\"(/viewimages?[^\"]*)\">.*" ); QString s( QString::fromUtf8(data.constData()) ); QStringList l( s.split("\n", QString::SkipEmptyParts) ); foreach( s, l ) { if( s.contains( imgRe ) ) { QUrl imgUrl( QString(s).replace( imgRe, "http://www.discogs.com\\1" ) ); emit requestDownload( this, SLOT(parseImagesHtml(QByteArray,QVariant)), imgUrl, payload ); return; } } }
void CachedImage::cacheImage() { if (m_src.isEmpty()) { m_localUrl = ""; emit localsrcChanged(); return; } QUrl imgUrl(m_src); //Do following when url if (imgUrl.url().startsWith("http://") || imgUrl.url().startsWith("https://")) { returnCached(imgUrl); } else { //The file url is local already. m_localUrl = m_src; emit localsrcChanged(); } }
void CreatePreviewTask::run() { PTOType data(ptoData); if (data.images.size() != preProcessedUrlsMap.size()) { errString = i18n("Project file parsing failed."); kDebug() << "Missing parsing data!"; successFlag = false; return; } KPMetadata metaIn(preProcessedUrlsMap.begin().value().preprocessedUrl.toLocalFile()); KPMetadata metaOut(preProcessedUrlsMap.begin().value().previewUrl.toLocalFile()); double scalingFactor = ((double) metaOut.getPixelSize().width()) / ((double) metaIn.getPixelSize().width()); data.project.fileFormat.fileType = PTOType::Project::FileFormat::JPEG; data.project.fileFormat.quality = 90; data.project.size.setHeight(data.project.size.height() * scalingFactor); data.project.size.setWidth(data.project.size.width() * scalingFactor); data.project.crop = QRect(); for (int imageId = 0; imageId < data.images.size(); imageId++) { PTOType::Image& image = data.images[imageId]; KUrl imgUrl(KUrl(tmpDir), image.fileName); ItemUrlsMap::const_iterator it; const ItemUrlsMap* ppum = &preProcessedUrlsMap; for (it = ppum->constBegin(); it != ppum->constEnd() && it.value().preprocessedUrl != imgUrl; ++it); if (it == ppum->constEnd()) { errString = i18n("Unknown input file in the project file: %1", image.fileName); kDebug() << "Unknown input File in the PTO: " << image.fileName; kDebug() << "IMG: " << imgUrl.toLocalFile(); successFlag = false; return; } image.fileName = it.value().previewUrl.fileName(); KUrl preview(KUrl(tmpDir), image.fileName); KPMetadata metaImage(preview.toLocalFile()); image.size = metaImage.getPixelSize(); image.optimisationParameters.clear(); } // Remove unncessary stuff data.controlPoints.clear(); // Add two commented line for a JPEG output data.lastComments.clear(); data.lastComments << "#hugin_outputImageType jpg"; data.lastComments << "#hugin_outputJPEGQuality 90"; (*previewPtoUrl) = tmpDir; previewPtoUrl->setFileName("preview.pto"); data.createFile(previewPtoUrl->toLocalFile()); kDebug() << "Preview PTO File created: " << previewPtoUrl->fileName(); successFlag = true; }