kimgio: jp2, jpeg and raw plugins review

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-10-12 01:01:02 +03:00
parent 1f9ff81688
commit cfe47507fa
3 changed files with 13 additions and 10 deletions

View file

@ -117,9 +117,11 @@ bool JP2Handler::canRead() const
bool JP2Handler::read(QImage *image)
{
const qint64 devicepos = device()->pos();
const QByteArray data = device()->readAll();
device()->seek(devicepos);
if (Q_UNLIKELY(data.isEmpty())) {
return false;
}
opj_codec_t* ojcodec = opj_create_decompress(guessOJCodec(data.constData()));
if (!ojcodec) {

View file

@ -37,12 +37,11 @@ static const uchar s_jpegexifheader[] = { 0xFF, 0xD8, 0xFF, 0xE1 };
static const struct HeadersTblData {
const uchar *header;
const int headersize;
const char *format;
} HeadersTbl[] = {
{ s_jpgjfifheader, 12, "jpg" },
{ s_jpgheader, 4, "jpg" },
{ s_jpg2header, 4, "jpg" },
{ s_jpegexifheader, 4, "jpg" }
{ s_jpgjfifheader, 12 },
{ s_jpgheader, 4 },
{ s_jpg2header, 4 },
{ s_jpegexifheader, 4 }
};
static const qint16 HeadersTblSize = sizeof(HeadersTbl) / sizeof(HeadersTblData);
@ -67,6 +66,10 @@ bool JPEGHandler::read(QImage *image)
{
const QByteArray data = device()->readAll();
if (Q_UNLIKELY(data.isEmpty())) {
return false;
}
tjhandle jpegdecomp = tjInitDecompress();
if (!jpegdecomp) {
kWarning() << "Could not initialize decompressor" << tjGetErrorStr();
@ -157,7 +160,7 @@ bool JPEGHandler::canRead(QIODevice *device)
for (int i = 0; i < HeadersTblSize; i++) {
if (qstrncmp(data.constData(), reinterpret_cast<const char*>(HeadersTbl[i].header), HeadersTbl[i].headersize) == 0) {
kDebug() << "Header detected" << HeadersTbl[i].format;
kDebug() << "Header detected";
return true;
}
}

View file

@ -44,9 +44,7 @@ bool RAWHandler::canRead() const
bool RAWHandler::read(QImage *image)
{
const qint64 devicepos = device()->pos();
QByteArray data = device()->readAll();
device()->seek(devicepos);
if (Q_UNLIKELY(data.isEmpty())) {
return false;