From 1b0dcc4f10d524eccffbc382d3a81726eeb186f0 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 19 Oct 2022 23:54:28 +0300 Subject: [PATCH] kimgio: simplify data copying in ico plugin Signed-off-by: Ivailo Monev --- kimgio/ico.cpp | 20 +++++--------------- kimgio/jp2.cpp | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/kimgio/ico.cpp b/kimgio/ico.cpp index 9c4d4957..76765a2e 100644 --- a/kimgio/ico.cpp +++ b/kimgio/ico.cpp @@ -240,17 +240,14 @@ bool ICOHandler::read(QImage *image) switch (bmpbpp) { case 32: { - QRgb* bmpimagebits = reinterpret_cast(bmpimage.bits()); - for (uint bi = 0; bi < bmpimagesize && bi < imageboundary; bi += 4) { - *bmpimagebits = qRgba(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi), imagebytes.at(bi + 3)); - bmpimagebits++; - } + char* bmpimagebits = reinterpret_cast(bmpimage.bits()); + ::memcpy(bmpimagebits, imagebytes.constData(), imageboundary * sizeof(char)); break; } case 24: { QRgb* bmpimagebits = reinterpret_cast(bmpimage.bits()); for (uint bi = 0; bi < bmpimagesize && bi < imageboundary; bi += 3) { - *bmpimagebits = qRgb(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi)); + *bmpimagebits = qRgba(imagebytes.at(bi + 2), imagebytes.at(bi + 1), imagebytes.at(bi), 0xff); bmpimagebits++; } break; @@ -343,15 +340,8 @@ bool ICOHandler::write(const QImage &image) datastream << bmpncolors; datastream << bmpnimportantcolors; - const QRgb* bmpimagebits = reinterpret_cast(bmpimage.constBits()); - for (uint bi = 0; bi < bmpimagesize; bi += 4) { - const uchar bmpb = qBlue(*bmpimagebits); - const uchar bmpg = qGreen(*bmpimagebits); - const uchar bmpr = qRed(*bmpimagebits); - const uchar bmpa = qAlpha(*bmpimagebits); - datastream << bmpb << bmpg << bmpr << bmpa; - bmpimagebits++; - } + const char* bmpimagebits = reinterpret_cast(bmpimage.constBits()); + datastream.writeRawData(bmpimagebits, bmpimagesize); return (datastream.status() == QDataStream::Ok); } diff --git a/kimgio/jp2.cpp b/kimgio/jp2.cpp index 20908318..166c6a50 100644 --- a/kimgio/jp2.cpp +++ b/kimgio/jp2.cpp @@ -183,7 +183,7 @@ bool JP2Handler::read(QImage *image) *image = QImage(ojimage->comps->w, ojimage->comps->h, QImage::Format_ARGB32); if (Q_UNLIKELY(image->isNull())) { - kWarning() << "Could not create image QImage"; + kWarning() << "Could not create image"; opj_destroy_codec(ojcodec); opj_stream_destroy(ojstream); opj_image_destroy(ojimage);