[Solved] Drawing a new image from 2 images and check if it is black
-
Hey,
I'm pretty new to Qt and I've writting some code that must do this:
I have two images and I want to create a new image, the new image is a merge of the two. If image 1 has black then the new image will have on that spot blue color otherwise it should be from the original code.
This is my code but it doens't work.
@ int c, m, y, k, al;
QColor color;
QColor drawColor;
QImage background;
QImage world;
QSize sizeImage;
int height, width;background.load("Background.jpg"); background = background.convertToFormat(QImage::Format_ARGB32); QPainter painter(&world); sizeImage = background.size(); width = sizeImage.width(); for(int i = 0; i < width; i++) { color = QColor::fromRgb (background.pixel(50,50) ); color.getCmyk(&c,&m,&y,&k,&al); if(c == 0 && m == 0 && y == 0 && k == 0) //then we have black as color and then we draw the color blue { drawColor.setBlue(255); painter.setPen(drawColor); painter.drawPoint(i,i); } else // then we draw from the background image { drawColor.setCmyk(c,m,y,k,al); painter.setPen(drawColor); painter.drawPoint(i,i); } } //adding new image to the graphicsScene QGraphicsPixmapItem item( QPixmap::fromImage(world)); QGraphicsScene* scene = new QGraphicsScene; scene->addItem(&item); QGraphicsView view(scene); view.show();
@
Is this a wrong way or what is wrong?
thanks already,
-
welcome to devnet
You might want to check in the debugger, if all components for "black" pixels are at any time set to zero.
-
In my console I get this:
QPainter::setPen: Painter not active
QPainter::drawPoints: Painter not activeAnd what exactly do I need to check in the debugger?
EDIT: I've seen in the debugger nothing looks wrong I think. Why is the painter not drawning something? Also is my for lus correct? Or Do I need 2 for lussen because I don't know if QImage is 2D array or 1D array.
-
Actually it is quite helpful to give us the error messages instead of just asking where is the problem ;-)
You construct a null image and then you try to write on it see "constructor":http://developer.qt.nokia.com/doc/qt-4.8/qimage.html#QImage
The application does not know where to write your pixel. Try to create QImage with a suitable size. -
Solved thanks. That was the problem that it was a null image.