mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 18:32:49 +00:00
kimgio: webp optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
d94f5f5d8a
commit
f07799521f
1 changed files with 5 additions and 4 deletions
|
@ -83,14 +83,15 @@ bool WebPHandler::read(QImage *image)
|
|||
m_loopcount = webpaniminfo.loop_count;
|
||||
m_imagecount = webpaniminfo.frame_count;
|
||||
|
||||
QRectF previousrect;
|
||||
QImage buffer(webpaniminfo.canvas_width, webpaniminfo.canvas_height, QImage::Format_ARGB32);
|
||||
if (Q_UNLIKELY(buffer.isNull())) {
|
||||
kWarning() << "Could not create buffer image";
|
||||
return false;
|
||||
}
|
||||
const QColor background = QColor(QRgb(webpaniminfo.bgcolor));
|
||||
|
||||
QRectF previousrect;
|
||||
QPainter painter(&buffer);
|
||||
const QColor background = QColor(QRgb(webpaniminfo.bgcolor));
|
||||
int framecounter = 0;
|
||||
WebPIterator webpiter;
|
||||
const WebPDemuxer* webpdemuxer = WebPAnimDecoderGetDemuxer(webpanimdec);
|
||||
|
@ -131,7 +132,6 @@ bool WebPHandler::read(QImage *image)
|
|||
return false;
|
||||
}
|
||||
|
||||
QPainter painter(&buffer);
|
||||
switch (webpiter.dispose_method) {
|
||||
case WEBP_MUX_DISPOSE_BACKGROUND: {
|
||||
// yep, there are images attempting to dispose the background without previous frame
|
||||
|
@ -167,7 +167,7 @@ bool WebPHandler::read(QImage *image)
|
|||
}
|
||||
previousrect = QRectF(webpiter.x_offset, webpiter.y_offset, webpiter.width, webpiter.height);
|
||||
painter.drawImage(previousrect, frame);
|
||||
painter.end();
|
||||
|
||||
|
||||
if (framecounter == m_currentimage) {
|
||||
// bound to reasonable limits
|
||||
|
@ -176,6 +176,7 @@ bool WebPHandler::read(QImage *image)
|
|||
}
|
||||
framecounter++;
|
||||
}
|
||||
painter.end();
|
||||
*image = buffer;
|
||||
|
||||
m_currentimage++;
|
||||
|
|
Loading…
Add table
Reference in a new issue