void MainWindow::loadImage() { QImageReader reader; reader.setFileName(QFileDialog::getOpenFileName(this,tr("Open image"),"C:\\Users\\GiBSoN\\Desktop",tr("Image files (*.jpg *.png)"))); QImage image = reader.read(); imageSize = image.size(); QVector<double> params; QVector<KPoint> points; for(int i=0;i<image.width();i++) { for(int j=0;j<image.height();j++) { params.push_back(qRed(image.pixel(i,j))); params.push_back(qGreen(image.pixel(i,j))); params.push_back(qBlue(image.pixel(i,j))); points.push_back(params); params.clear(); } } nGas.setInputData(points); ui->actionNeural_Gas_Image->setEnabled(true); ui->graphicsView->setVisible(true); ui->graphicsView_2->setVisible(true); QGraphicsScene* scene = new QGraphicsScene(this); ui->graphicsView->setScene(scene); scene->addPixmap(QPixmap::fromImage(image.scaled(ui->graphicsView->width()*0.95,ui->graphicsView->height()*0.95))); ui->graphicsView->show(); qDebug() << "Pixels: " << points.size() << " Dimensions: " << points[0].getDimensions(); }
void LoadFilter::detectFormat() { // FIXME: work-around bug 242369 if (priv->fileFormatQt.isEmpty() && priv->fileFormat.isEmpty() && priv->fileName.endsWith(".mp4")) { if (priv->filterError == QuillImageFilter::NoError) priv->filterError = QuillImageFilter::UnsupportedFormatError; priv->isInvalid = true; priv->fileFormat = "video/mp4"; return; } if (priv->fileFormatQt.isEmpty() && (priv->fileFormat.isEmpty() || priv->fileFormat.startsWith("image/"))) { QImageReader reader; if (!priv->iODevice) reader.setFileName(priv->fileName); else reader.setDevice(priv->iODevice); priv->fileFormatQt = formatFromReader(&reader); } if (priv->fileFormat.isEmpty()) { priv->fileFormat = MimeType::fromQImageFormat(priv->fileFormatQt); } if (priv->fileFormatQt.isEmpty()) { if (priv->filterError == QuillImageFilter::NoError) priv->filterError = QuillImageFilter::UnsupportedFormatError; priv->isInvalid = true; } }
bool syImgReaderCodec::OpenInput(const syString filename) { bool result = false; syString newfilename = filename; if(m_Filename != "" && filename.empty()) { newfilename = m_Filename; } else { newfilename = filename; } if(m_Reader && syString(m_Reader->fileName()) != newfilename) { CloseInput(); if(m_Reader) { m_Reader->setFileName(newfilename); m_Filename = filename; } } if(!m_Reader) { m_Reader = new QImageReader(newfilename); m_Filename = newfilename; } result = m_Reader->canRead(); if(result) { if(m_Image) { delete m_Image; } m_Image = new QImage(GetWidth(),GetHeight(),QImage::Format_RGB32); } return result; }
VideoReviewDialog::VideoReviewDialog(QWidget* parent, const QString& imgdir) : QDialog(parent) { setWindowTitle("Video review for Hotbuild2"); QImageReader *reader = new QImageReader(imgdir + "img_start_bground_sample.jpg"); QImage bground = reader->read(); delete reader; QPalette* palette = new QPalette(); palette->setBrush(QPalette::Background, *(new QBrush(bground))); setPalette(*palette); QVBoxLayout *layout = new QVBoxLayout(this); QWebView *webview = new QWebView(this); webview->setGeometry(0, 0, 640, 480); webview->resize(640, 480); QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true); webview->settings()->setAttribute(QWebSettings::PluginsEnabled, true); webview->load(QUrl("http://www.youtube.com/embed/NNXV01cttMY?html5=1")); webview->show(); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this); // connect(buttonBox, SIGNAL(accepted()), SLOT(accept())); layout->addWidget(webview); layout->addWidget(buttonBox); }
void PictureLoader::picDownloadFinished(QNetworkReply *reply) { if (reply->error()) { qDebug() << "Download failed:" << reply->errorString(); } int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (statusCode == 301 || statusCode == 302) { QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); QNetworkRequest req(redirectUrl); qDebug() << "following redirect:" << cardBeingDownloaded.getCard()->getName() << "Url:" << req.url(); networkManager->get(req); return; } const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader if(imageIsBlackListed(picData)) { qDebug() << "Picture downloaded, but blacklisted, will consider it as not found"; picDownloadFailed(); reply->deleteLater(); startNextPicDownload(); return; } QImage testImage; QImageReader imgReader; imgReader.setDecideFormatFromContent(true); imgReader.setDevice(reply); QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer if (extension == ".jpeg") extension = ".jpg"; if (imgReader.read(&testImage)) { QString setName = cardBeingDownloaded.getSetName(); if(!setName.isEmpty()) { if (!QDir().mkpath(picsPath + "/downloadedPics/" + setName)) { qDebug() << picsPath + "/downloadedPics/" + setName + " could not be created."; return; } QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + extension); if (!newPic.open(QIODevice::WriteOnly)) return; newPic.write(picData); newPic.close(); } imageLoaded(cardBeingDownloaded.getCard(), testImage); } else { picDownloadFailed(); } reply->deleteLater(); startNextPicDownload(); }
void PictureLoader::picDownloadFinished(QNetworkReply *reply) { QString picsPath = _picsPath; if (reply->error()) { qDebug() << "Download failed:" << reply->errorString(); } const QByteArray &picData = reply->peek(reply->size()); //peek is used to keep the data in the buffer for use by QImageReader QImage testImage; QImageReader imgReader; imgReader.setDecideFormatFromContent(true); imgReader.setDevice(reply); QString extension = "." + imgReader.format(); //the format is determined prior to reading the QImageReader data into a QImage object, as that wipes the QImageReader buffer if (extension == ".jpeg") extension = ".jpg"; if (imgReader.read(&testImage)) { QString setName = cardBeingDownloaded.getSetName(); if(!setName.isEmpty()) { if (!QDir().mkpath(picsPath + "/downloadedPics/" + setName)) { qDebug() << picsPath + "/downloadedPics/" + setName + " could not be created."; return; } QFile newPic(picsPath + "/downloadedPics/" + setName + "/" + cardBeingDownloaded.getCard()->getCorrectedName() + extension); if (!newPic.open(QIODevice::WriteOnly)) return; newPic.write(picData); newPic.close(); } emit imageLoaded(cardBeingDownloaded.getCard(), testImage); } else if (cardBeingDownloaded.getHq()) { qDebug() << "HQ: received invalid picture. URL:" << reply->request().url(); cardBeingDownloaded.setHq(false); cardsToDownload.prepend(cardBeingDownloaded); } else { qDebug() << "LQ: received invalid picture. URL:" << reply->request().url(); if (cardBeingDownloaded.nextSet()) { cardBeingDownloaded.setHq(true); mutex.lock(); loadQueue.prepend(cardBeingDownloaded); mutex.unlock(); emit startLoadQueue(); } else emit imageLoaded(cardBeingDownloaded.getCard(), QImage()); } reply->deleteLater(); startNextPicDownload(); }
bool ImageStripScene::setCurrentDirectory(const QString& path) { QMutexLocker locker(&m_mutex); QDir directory(path); QImageReader reader; if(directory.exists()) { clear(); if(m_loader) { m_loader->disconnect(this); m_loader->stopExecution(); if(!m_loader->wait(500)) { m_loader->terminate(); m_loader->wait(); } } delete m_loader; m_numItems = 0; m_loader = new ImageLoader(m_imgSize); connect(m_loader, SIGNAL(sigItemContentChanged(ImageItem*)), SLOT(slotItemContentChanged(ImageItem*))); QStringList files = directory.entryList(QDir::Files); QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(); for(QStringList::iterator name=files.begin(); name!=files.end(); ++name) { QString path = directory.absoluteFilePath(*name); reader.setFileName(path); if(reader.canRead()) { ImageItem* item = new ImageItem(m_imgSize, path, m_loader); m_loader->addPath(item, path); layout->addItem(item); ++m_numItems; } } QGraphicsWidget* widget = new QGraphicsWidget(); widget->setLayout(layout); widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); addItem(widget); setSceneRect(widget->boundingRect()); m_loader->start(QThread::LowPriority); return true; } return false; }
Frame::Frame ( const Epyx::byte_str& data, const Frame::ptime& timestamp, const ptime& rt): timestamp(timestamp), realTime(rt) { QByteArray message = QByteArray( reinterpret_cast<const char * > ( data.data() ), data.size()); QBuffer buffer ( &message ); QImageReader in ( &buffer, "JPG" ); image = in.read().copy(); }
gboolean media_art_file_to_jpeg (const gchar *filename, const gchar *target, GError **error) { if (max_width_in_bytes < 0) { g_debug ("Not saving album art from file, disabled in config"); return TRUE; } /* TODO: Add resizing support */ /* TODO: Add error reporting */ QFile file (filename); if (!file.open (QIODevice::ReadOnly)) { g_message ("Could not get QFile from file: '%s'", filename); return FALSE; } QByteArray array = file.readAll (); QBuffer buffer (&array); buffer.open (QIODevice::ReadOnly); QImageReader reader (&buffer); if (!reader.canRead ()) { g_message ("Could not get QImageReader from file: '%s', reader.canRead was FALSE", filename); return FALSE; } QImage image1; image1 = reader.read (); if (image1.hasAlphaChannel ()) { QImage image2 (image1.size(), QImage::Format_RGB32); image2.fill (QColor(Qt::black).rgb()); QPainter painter (&image2); painter.drawImage (0, 0, image1); image2.save (QString (target), "jpeg"); } else { image1.save (QString (target), "jpeg"); } return TRUE; }
void syImgReaderCodec::CloseInput() { if(m_Reader) { m_Reader->setDevice(0); m_Filename.clear(); m_ImageLoaded = false; } }
void syImgReaderCodec::LoadCurrentFrame(syBitmap* dest) { if(!dest) { return; } sySafeMutexLocker lock(m_Mutex); if(lock.IsLocked()) { // 1. Check if m_Image is null. If not, abort (can't create the image, we could be in a worker thread) if(!m_Image) { return; } // 2. Read the image into m_Image. if(!m_ImageLoaded && m_Reader->read(m_Image)) { m_ImageLoaded = true; } // 3. Copy the image to dest. if(m_ImageLoaded) { const unsigned char* bits = m_Image->bits(); dest->CopyFrom(bits,GetWidth(),GetHeight(),vcfRGB32,m_Image->numBytes()); } else { dest->Clear(); } } }
bool syImgReaderCodec::OpenMemoryInput(const unsigned char* buf, unsigned int size, const char* mimetype) { bool result = false; syString fileformat; syString smimetype(mimetype, true); if(smimetype == "image/gif") { fileformat = "gif"; } if(smimetype == "image/png") { fileformat = "png"; } else if(smimetype == "image/jpeg") { fileformat = "jpg"; } else if(smimetype == "image/bmp") { fileformat = "bmp"; } else { return false; // Unrecognized file format! } if(!m_Buffer) { m_Buffer = new QBuffer; } m_Buffer->setData((const char*)buf,size); if(!m_Reader) { m_Reader = new QImageReader(); } m_Reader->setDevice(m_Buffer); result = m_Reader->canRead(); if(result) { syString actual_format(QString(m_Reader->format())); if(actual_format != fileformat) { result = false; } if(m_Image) { delete m_Image; } m_Image = new QImage(GetWidth(),GetHeight(),QImage::Format_RGB32); } if(!result) { m_Reader->setDevice(0); delete m_Reader; m_Reader = 0; delete m_Buffer; m_Buffer = 0; m_Filename.clear(); } return result; }
void Xmpp::vCardReceived (const QXmppVCardIq& vCard) { QByteArray photo = vCard.photo(); QBuffer buffer; buffer.setData (photo); buffer.open (QIODevice::ReadOnly); QImageReader imageReader (&buffer); QImage image = imageReader.read(); if (image.isNull()) image = QImage (":/faces/faces/generic-user.png"); jids.append (vCard.from()); users.append (vCard.fullName()); emit newUser (vCard.fullName(), vCard.from(), image); }
QPixmap Utils::renderSVG(const QString &path, const QSize &size) { QImageReader reader; QPixmap pixmap; reader.setFileName(path); if (reader.canRead()) { const qreal ratio = qApp->devicePixelRatio(); reader.setScaledSize(size * ratio); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(ratio); } else { pixmap.load(path); } return pixmap; }
void MainWindow_M::openFile() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"./",tr("Images (*.png)")); if(fileName.isEmpty()) return; QFile file(fileName); file.read(QIODevice::ReadOnly); QImageReader imageReader; imageReader.setDevice(&file); renderarea->setCurrentCanvas(imageReader.read()); renderarea->setContentChanged(false); statusBar()->showMessage(fileName.section('/', -1)); clearTempFiles(); strCurrentFileName = fileName; }
bool readImageWithPrescale(QImageReader& reader, QImage& image, double& prescaleFactor) { // used to scale the file before it is actually read to memory prescaleFactor = 1.0; int height = reader.size().height(); if(height > HALF_DECIMATION_THRESHOLD_H) prescaleFactor = 0.5; else if(height > QUARTER_DECIMATION_THRESHOLD_H) prescaleFactor = 0.25; else if(height > EIGHTH_DECIMATION_THRESHOLD_H) prescaleFactor = 0.125; if(prescaleFactor != 1.0) reader.setScaledSize(QSize(reader.size().width() * prescaleFactor, reader.size().height() * prescaleFactor)); return reader.read(&image); }
unsigned long syImgReaderCodec::GetWidth() { if(!m_Reader) { return 0; } int width = m_Reader->size().width(); if(width < 0) { return 0; } return width; }
unsigned long syImgReaderCodec::GetHeight() { if(!m_Reader) { return 0; } int height = m_Reader->size().height(); if(height < 0) { return 0; } return height; }
void Document::pages( QVector<Okular::Page*> * pagesVector ) { qSort( mEntries.begin(), mEntries.end(), caseSensitiveNaturalOrderLessThen ); QScopedPointer< QIODevice > dev; int count = 0; pagesVector->clear(); pagesVector->resize( mEntries.size() ); QImageReader reader; foreach(const QString &file, mEntries) { if ( mArchive ) { const KArchiveFile *entry = static_cast<const KArchiveFile*>( mArchiveDir->entry( file ) ); if ( entry ) { dev.reset( entry->createDevice() ); } } else if ( mDirectory ) { dev.reset( mDirectory->createDevice( file ) ); } else { dev.reset( mUnrar->createDevice( file ) ); } if ( ! dev.isNull() ) { reader.setDevice( dev.data() ); if ( reader.canRead() ) { QSize pageSize = reader.size(); if ( !pageSize.isValid() ) { const QImage i = reader.read(); if ( !i.isNull() ) pageSize = i.size(); } if ( pageSize.isValid() ) { pagesVector->replace( count, new Okular::Page( count, pageSize.width(), pageSize.height(), Okular::Rotation0 ) ); mPageMap.append(file); count++; } else { qCDebug(OkularComicbookDebug) << "Ignoring" << file << "doesn't seem to be an image even if QImageReader::canRead returned true"; } } } } pagesVector->resize( count ); }
/* * DirFilesFilter * QFileSystemModel의 버그(캐시?) 인지 setNameFilter를 해도 계속해서 디렉토리나 파일이 보임 * 그래서 디렉토리를 조회하여 직접 리스트를 만듬 */ void MainWindow::DirFilesFilter(QString path) { qDebug() << "directoryLoaded"; QModelIndex fileIdx = files_->index(path); int numRows = files_->rowCount(fileIdx); QImageReader imgReader; for (int index=0; index<numRows; index++) { QModelIndex mi = files_->index(index, 0, fileIdx); QFileInfo fileInfo = files_->fileInfo(mi); imgReader.setFileName(fileInfo.absoluteFilePath()); if(imgReader.canRead()) extfilter_imgs_ << fileInfo; } //extfilter_imgs 파일들을 모델로 만든다. FilesModelUpdate(); }
void DlgEditAvatar::actBrowse() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), QDir::homePath(), tr("Image Files (*.png *.jpg *.bmp)")); if(fileName.isEmpty()) { imageLabel->setText(tr("No image chosen.")); return; } QImage image; QImageReader imgReader; imgReader.setDecideFormatFromContent(true); imgReader.setFileName(fileName); if(!imgReader.read(&image)) { qDebug() << "Avatar image loading failed for file:" << fileName; imageLabel->setText(tr("Invalid image chosen.")); return; } imageLabel->setPixmap(QPixmap::fromImage(image).scaled(400, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation)); }
bool PictureLoader::cardImageExistsOnDisk(QString & setName, QString & correctedCardname) { QImage image; QImageReader imgReader; imgReader.setDecideFormatFromContent(true); //The list of paths to the folders in which to search for images QList<QString> picsPaths = QList<QString>() << picsPath + "/CUSTOM/" + correctedCardname; if(!setName.isEmpty()) { picsPaths << picsPath + "/" + setName + "/" + correctedCardname << picsPath + "/downloadedPics/" + setName + "/" + correctedCardname; } //Iterates through the list of paths, searching for images with the desired name with any QImageReader-supported extension for (int i = 0; i < picsPaths.length(); i ++) { imgReader.setFileName(picsPaths.at(i)); if (imgReader.read(&image)) { qDebug() << "Picture found on disk (set: " << setName << " card: " << correctedCardname << ")"; imageLoaded(cardBeingLoaded.getCard(), image); return true; } imgReader.setFileName(picsPaths.at(i) + ".full"); if (imgReader.read(&image)) { qDebug() << "Picture.full found on disk (set: " << setName << " card: " << correctedCardname << ")"; imageLoaded(cardBeingLoaded.getCard(), image); return true; } } return false; }
void KisImageLoader::run() { typedef QHash<KisImageItem*,Data>::iterator Iterator; QImageReader reader; for(Iterator data=m_data.begin(); data!=m_data.end() && m_run; ++data) { reader.setFileName(data->path); qreal w = m_size; qreal h = m_size; if(reader.supportsOption(QImageIOHandler::Size)) { QSizeF imgSize = reader.size(); if(imgSize.width() > imgSize.height()) { qreal div = m_size / imgSize.width(); h = imgSize.height() * div; } else { qreal div = m_size / imgSize.height(); w = imgSize.width() * div; } } reader.setScaledSize(QSize(w,h)); data->image = reader.read(); data->isLoaded = true; emit sigItemContentChanged(data.key()); } }
void RefImage::thumbFromFile() { QFile file(imagePath()); if (file.exists()) { QImageReader* imageReader = new QImageReader(imagePath()); int imageWidth = imageReader->size().width() * (float)CAROUSEL_HEIGHT/imageReader->size().height(); int imageHeight = CAROUSEL_HEIGHT; imageReader->setScaledSize(QSize(imageWidth, imageHeight)); QImage image; if (imageReader->read(&image)) { insertThumb(QPixmap::fromImage(image)); } else { qDebug() << "read failed"; } } }
PhotoItem * PhotoItem::fromUrl(const KUrl & imageUrl, Scene * scene) { QImage img; if (PhotoLayoutsEditor::instance()->hasInterface()) { KIPI::ImageInfo info = PhotoLayoutsEditor::instance()->interface()->info(imageUrl); QImageReader ir (info.path().toLocalFile()); if (!ir.read(&img)) return 0; } else if (imageUrl.isValid()) { QImageReader ir (imageUrl.toLocalFile()); if (!ir.read(&img)) return 0; } if (img.isNull()) return 0; PhotoItem * result = new PhotoItem(img, imageUrl.fileName(), scene); result->d->setFileUrl(imageUrl); return result; }
QImage PictureHelper::loadQImage(QString url) { QImageReader reader; reader.setFileName(getImagePath(url)); // Resize img if too large (1280x768) QSize imgSize = reader.size(); if (imgSize.width()<imgSize.height()) { if (imgSize.height()>720) { imgSize.setWidth((int)imgSize.width() * 720 / imgSize.height()); imgSize.setHeight(720); reader.setScaledSize(imgSize); } } else if (imgSize.width()>imgSize.height()) { if (imgSize.width() > 720) { imgSize.setHeight((int)imgSize.height() * 720 / imgSize.width()); imgSize.setWidth(720); reader.setScaledSize(imgSize); } } return reader.read(); }
QPixmap loadPixmap(const QString &path) { qreal ratio = 1.0; QPixmap pixmap; const qreal devicePixelRatio = qApp->devicePixelRatio(); if (!qFuzzyCompare(ratio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(path); } return pixmap; }
void ImageLoader::run() { typedef QHash<ImageItem*,Data>::iterator Iterator; QImageReader reader; #ifdef Q_OS_WIN for(Iterator data=m_data.begin(); data!=m_data.end() && m_run; ++data) { data->image = QImage(data->path).scaled(m_size, m_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); data->isLoaded = true; emit sigItemContentChanged(data.key()); } #else for(Iterator data=m_data.begin(); data!=m_data.end() && m_run; ++data) { reader.setFileName(data->path); qreal w = m_size; qreal h = m_size; if (reader.supportsOption(QImageIOHandler::Size)) { QSizeF imgSize = reader.size(); if(imgSize.width() > imgSize.height()) { qreal div = m_size / imgSize.width(); h = imgSize.height() * div; } else { qreal div = m_size / imgSize.height(); w = imgSize.width() * div; } } reader.setScaledSize(QSize(w,h)); data->image = reader.read(); data->isLoaded = true; emit sigItemContentChanged(data.key()); } #endif }
/** * Loads the thumbnail from the metadata. * If no thumbnail is embedded, the whole image * is loaded and downsampled in a fast manner. * @param file the file to be loaded * @return QImage the loaded image. Null if no image * could be loaded at all. **/ QImage DkThumbNail::computeIntern(const QFileInfo file, const QSharedPointer<QByteArray> ba, int forceLoad, int maxThumbSize, int minThumbSize, bool rescale) { DkTimer dt; //qDebug() << "[thumb] file: " << file.absoluteFilePath(); // see if we can read the thumbnail from the exif data QImage thumb; DkMetaDataT metaData; try { if (!ba || ba->isEmpty()) metaData.readMetaData(file); else metaData.readMetaData(file, ba); // read the full image if we want to create new thumbnails if (forceLoad != force_save_thumb) thumb = metaData.getThumbnail(); } catch(...) { // do nothing - we'll load the full file } removeBlackBorder(thumb); if (thumb.isNull() && forceLoad == force_exif_thumb) return QImage(); bool exifThumb = !thumb.isNull(); int orientation = metaData.getOrientation(); int imgW = thumb.width(); int imgH = thumb.height(); int tS = minThumbSize; // as found at: http://olliwang.com/2010/01/30/creating-thumbnail-images-in-qt/ QString filePath = (file.isSymLink()) ? file.symLinkTarget() : file.absoluteFilePath(); QImageReader* imageReader; if (!ba || ba->isEmpty()) imageReader = new QImageReader(filePath); else { QBuffer buffer; buffer.setData(ba->data()); buffer.open(QIODevice::ReadOnly); imageReader = new QImageReader(&buffer, QFileInfo(filePath).suffix().toStdString().c_str()); buffer.close(); } if (thumb.isNull() || thumb.width() < tS && thumb.height() < tS) { imgW = imageReader->size().width(); imgH = imageReader->size().height(); // locks the file! } //else if (!thumb.isNull()) // qDebug() << "EXIV thumb loaded: " << thumb.width() << " x " << thumb.height(); if (rescale && (imgW > maxThumbSize || imgH > maxThumbSize)) { if (imgW > imgH) { imgH = (float)maxThumbSize / imgW * imgH; imgW = maxThumbSize; } else if (imgW < imgH) { imgW = (float)maxThumbSize / imgH * imgW; imgH = maxThumbSize; } else { imgW = maxThumbSize; imgH = maxThumbSize; } } if (thumb.isNull() || thumb.width() < tS && thumb.height() < tS || forceLoad == force_full_thumb || forceLoad == force_save_thumb) { // flip size if the image is rotated by 90° if (metaData.isTiff() && abs(orientation) == 90) { int tmpW = imgW; imgW = imgH; imgH = tmpW; qDebug() << "EXIV size is flipped..."; } QSize initialSize = imageReader->size(); imageReader->setScaledSize(QSize(imgW, imgH)); thumb = imageReader->read(); // try to read the image if (thumb.isNull()) { DkBasicLoader loader; if (loader.loadGeneral(file, ba, true, true)) thumb = loader.image(); } // the image is not scaled correctly yet if (rescale && !thumb.isNull() && (imgW == -1 || imgH == -1)) { imgW = thumb.width(); imgH = thumb.height(); if (imgW > maxThumbSize || imgH > maxThumbSize) { if (imgW > imgH) { imgH = (float)maxThumbSize / imgW * imgH; imgW = maxThumbSize; } else if (imgW < imgH) { imgW = (float)maxThumbSize / imgH * imgW; imgH = maxThumbSize; } else { imgW = maxThumbSize; imgH = maxThumbSize; } } thumb = thumb.scaled(QSize(imgW*2, imgH*2), Qt::KeepAspectRatio, Qt::FastTransformation); thumb = thumb.scaled(QSize(imgW, imgH), Qt::KeepAspectRatio, Qt::SmoothTransformation); } // is there a nice solution to do so?? imageReader->setFileName("josef"); // image reader locks the file -> but there should not be one so we just set it to another file... delete imageReader; } else if (rescale) { thumb = thumb.scaled(QSize(imgW, imgH), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); //qDebug() << "thumb loaded from exif..."; } if (orientation != -1 && orientation != 0 && (metaData.isJpg() || metaData.isRaw())) { QTransform rotationMatrix; rotationMatrix.rotate((double)orientation); thumb = thumb.transformed(rotationMatrix); } // save the thumbnail if the caller either forces it, or the save thumb is requested and the image did not have any before if (forceLoad == force_save_thumb || (forceLoad == save_thumb && !exifThumb)) { try { QImage sThumb = thumb.copy(); if (orientation != -1 && orientation != 0) { QTransform rotationMatrix; rotationMatrix.rotate(-(double)orientation); sThumb = sThumb.transformed(rotationMatrix); } metaData.setThumbnail(sThumb); if (!ba || ba->isEmpty()) metaData.saveMetaData(file); else metaData.saveMetaData(file, ba); qDebug() << "[thumb] saved to exif data"; } catch(...) { qDebug() << "Sorry, I could not save the metadata"; } } if (!thumb.isNull()) qDebug() << "[thumb] " << file.fileName() << " loaded in: " << dt.getTotal() << ((exifThumb) ? " from EXIV" : " from File"); //if (!thumb.isNull()) // qDebug() << "thumb: " << thumb.width() << " x " << thumb.height(); return thumb; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { m_item1=0; ui->setupUi(this); readSettings(); QString title=QString(APP_NAME); setWindowTitle(title); // The engine m_engine= new slideShowEngine; if(m_engine==0) { qDebug() << "error while creating the engine"; return; } // The Model m_sequence = new sequenceModel; if(m_sequence==0) { qDebug() << "error while creating the Model"; return; } connect(m_sequence,SIGNAL(dataChanged (QModelIndex,QModelIndex)),this,SLOT(modelChanged(QModelIndex,QModelIndex))); ui->listView->setModel(m_sequence); ui->listView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(listClicked(QModelIndex))); connect(ui->listView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(listDoubleClicked(QModelIndex))); connect(ui->actionNew,SIGNAL(triggered()),this,SLOT(fileNewSlot())); connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(fileOpenSlot())); connect(ui->actionClose,SIGNAL(triggered()),this,SLOT(fileCloseSlot())); connect(ui->actionSave,SIGNAL(triggered()),this,SLOT(fileSaveSlot())); connect(ui->actionSave_As,SIGNAL(triggered()),this,SLOT(fileSaveAsSlot())); connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(exitSlot())); connect(ui->actionExport,SIGNAL(triggered()),this,SLOT(exportToMovie())); connect(ui->actionOptions,SIGNAL(triggered()),this,SLOT(movieOptionsSlot())); connect(ui->actionManage_Soundtrack,SIGNAL(triggered()),this,SLOT(manageSoundtracks())); createListContextMenu(); connect(ui->listView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(listContextMenuRequested(QPoint))); connect(ui->actionPreview,SIGNAL(triggered()),this,SLOT(startSlideShowEngine())); connect(ui->startButton,SIGNAL(released()),this,SLOT(startSlideShowEngine())); // The Delegate m_delegate = new delegate; ui->listView->setItemDelegate(m_delegate); ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked); // | QAbstractItemView::SelectedClicked); ui->listView->setSelectionBehavior(QAbstractItemView::SelectItems); // The View m_scene=new QGraphicsScene; ui->graphicsView->setScene(m_scene); // set filters = all supported file formats. New plugins will automatically add new image formats QList <QByteArray> supportedFilters; QStringList filters; QString extensionFilter; QImageReader reader; supportedFilters = reader.supportedImageFormats(); for (int i = 0; i < supportedFilters.size(); ++i) // fill supported file extensions { extensionFilter.append("*."); extensionFilter.append(supportedFilters[i]); filters.append(extensionFilter); extensionFilter.clear(); } m_FileSystemModel.setRootPath(""); m_FileSystemModel.setNameFilters(QStringList(filters)); ui->dirView->setModel(&m_FileSystemModel); connect(ui->dirView,SIGNAL(clicked(QModelIndex)),this,SLOT(dirViewClickSlot(QModelIndex))); connect(ui->dirView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(dirViewDoubleClickSlot(QModelIndex))); ui->dirView->setColumnHidden(1,true); ui->dirView->setColumnHidden(2,true); ui->dirView->setColumnHidden(3,true); ui->dirView->setHeaderHidden(true); ui->dirView->setAnimated(false); ui->dirView->setIndentation(20); ui->dirView->setSortingEnabled(true); ui->dirView->show(); }