diff --git a/kimgio/ico.cpp b/kimgio/ico.cpp index 3093181b..c64c25fc 100644 --- a/kimgio/ico.cpp +++ b/kimgio/ico.cpp @@ -330,7 +330,7 @@ bool ICOHandler::write(const QImage &image) uint bmpheadersize = 40; uint bmpwidth = bmpimage.width(); - uint bmpheight = bmpimage.height(); + uint bmpheight = (bmpimage.height() * 2); ushort bmpplanes = 0; ushort bmpbpp = bmpimage.depth(); uint bmpcompression = BMPCompression::CompressionRGB; @@ -366,6 +366,11 @@ bool ICOHandler::write(const QImage &image) datastream.writeRawData(bmpimagebits, bmpimagesize); #endif + const QImage bmpimagemask = bmpimage.createAlphaMask(); + const char* bmpimagemaskbits = reinterpret_cast(bmpimagemask.constBits()); + uint bmpimagemasksize = bmpimagemask.byteCount(); + datastream.writeRawData(bmpimagemaskbits, bmpimagemasksize); + return (datastream.status() == QDataStream::Ok); }