At the moment my application does a conversion every time we apply a filter. This seems to have a huge performance hit.
Code:
Magick::Image* fromQtImage(const QImage &image) const
{
// TODO: May need to convert images pixel by pixel.
// Also need to take into account whether the image has an alpha chael or not.
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
//Use raw format instead of JPG to avoid image format conversion and quality loss
if (!image.save(&buffer, "PNG"))
retu 0;
Magick::Blob blob(byteArray.data(), byteArray.length());
retu new Magick::Image(blob);
}
QImage toQtImage(Magick::Image *image)
{
Magick::Blob blob;
image->write(&blob);
QByteArray arr((char *)blob.data(), blob.length());
QImage img;
img.loadFromData(arr);
retu img;
}
QImage FilterManager::oilPaint(const QImage &image)
{
Magick::Image *magickImage = d->fromQtImage(image);
magickImage->oilPaint();
QImage modifiedImage = d->toQtImage(magickImage);
delete magickImage;
retu modifiedImage;
}
برچسب:
نویسنده: استخدام کار