

- #Compare qimage and on1 resize update#
- #Compare qimage and on1 resize manual#
- #Compare qimage and on1 resize code#
Three different approaches to UI and complexity The Super Resolution tool in both Adobe Camera Raw and Lightroom is an on/off switch, with no user controls whatsoever available. Let's take a look at how it stacks up to what Adobe and ON1 have to offer.
#Compare qimage and on1 resize update#
And hot on the heels of an update promising even better results, I was keen to learn how it compared both to its nearest rivals. My time with Photo AI made me extremely curious to see how the program from which Photo AI drew its resolution-enhancing algorithms, Topaz Gigapixel AI, might perform given its rather greater selection of controls. Even when processing photos with quite low resolutions it delivered usable enlargements, with the only Achilles' heel being the results when shots included recognizable logos or barely-readable text. Although I've used competing resolution-boosting tools like Adobe's Super Resolution and ON1 Resize AI in the past, I was nevertheless surprised by the usability of Photo AI's resolution enhancement. You should have created such an example when asking the question.In my recent review of Topaz Labs' Photo AI, I came away more than a little impressed by its AI-powered Enhance Resolution function.
#Compare qimage and on1 resize code#
Self-contained code examples should be small, minimal, and in a single file. In fact, it's a premature pessimization to do so. It's a value class, there's no point to explicitly allocating it via new. Prefer keeping member variables as values. The compiler can do it all for you in this case.
#Compare qimage and on1 resize manual#
The conspicuous absence of manual memory management isn't by chance but by design: there isn't a single new nor delete anywhere in the code. These facts should be indicated in widget's properties, as a performance optimization.Ĭhecking QImage::size() takes care of null images - their size is null too. The canvas always draws itself fully and has top-left-corner-aligned contents. The change indication helper won't schedule an update if the widget's painting is underway. Swapping out an image with an active painter is not allowed. It is not necessary to explicitly schedule an update after a resize: Qt already does that.

Relevant setters are also slots - this makes the widget more composable with other objects via signal-slot connections. SetImage(std::move(someImage)) is an optimization for when someImage is not needed anymore: it saves a copy. The widget ignores user interaction when it's disabled. The image can be safely cleared at any time, even when the left mouse button is depressed. To change QImage's size you have to create a new image, copy the contents using QPainter::drawImage, then swap the old one with the new one.ĭue to simplicity of the paint tool, it's not necessary to track the painting/non-painting state explicitly. The paintEvent enforces the precondition of "there's a correctly sized image to paint" by calling newImage. connect imageChanged to a label's setPixmap and have a duplicate canvas display. The image is a user property of the widget.

I don't know how "simple" your simple paint application is, but I sense that you're overcomplicating things a bit.
