qzxing/source/imagehandler.cpp
Alexxey593 4df9512790 I found that if QR-Code was generated with non standard charSet (and the message language is not English) than decoded QString contains wrong characters. So we must use QTextCodec to make it readable.
Now tagFound signal emits decoded string. If you want to know  what code was detected and what charSet is used, use tagFoundAdvanced(QString tag, QString format, QString charSet) signal or functions foundedFormat() and charSet().
2015-06-11 10:36:08 +03:00

45 lines
1.2 KiB
C++

#include "imagehandler.h"
#include <QGraphicsObject>
#include <QImage>
#include <QPainter>
#include <QStyleOptionGraphicsItem>
#include <QDebug>
ImageHandler::ImageHandler(QObject *parent) :
QObject(parent)
{
}
QImage ImageHandler::extractQImage(QObject *imageObj,
const double offsetX, const double offsetY,
const double width, const double height)
{
QGraphicsObject *item = qobject_cast<QGraphicsObject*>(imageObj);
if (!item) {
qDebug() << "Item is NULL";
return QImage();
}
QImage img(item->boundingRect().size().toSize(), QImage::Format_RGB32);
img.fill(QColor(255, 255, 255).rgb());
QPainter painter(&img);
QStyleOptionGraphicsItem styleOption;
item->paint(&painter, &styleOption);
if(offsetX == 0 && offsetY == 0 && width == 0 && height == 0)
return img;
else
{
return img.copy(offsetX, offsetY, width, height);
}
}
void ImageHandler::save(QObject *imageObj, const QString &path,
const double offsetX, const double offsetY,
const double width, const double height)
{
QImage img = extractQImage(imageObj, offsetX, offsetY, width, height);
img.save(path);
}