QLabel show image slowly - image

I develop a image browser to show image series with QSlider. I connncet valueChanged(int) of QSlider to a self-defined function:
QObject::connect(ui.imgIndexSlider, SIGNAL(valueChanged(int)), this,SLOT(onimgIndexSliderValueChanged(int)));
when I drag the slider, the image that QLabel shows will changed by the QSlider value.It works.But there is a problem that if you drag fast,the Application will not run acceptably.
Could you tell me how to slove this problem.
Thank you very much.

It is not clear much from your question, but I am assuming that you are showing images like a slideshow using the slider. When you slide it fast your application is getting choked i.e. freezes?
Qt is rendering the image in your GUI thread.
If the images are all high resolution then it will take much more time in rendering each image.
When you slide faster than Qt can render a single image you will experience problems.
So here is what I would ideally do if I were in your place:
Implement a custom algorithm which will read the image file and
create a preview image of much smaller size. Since you are only
generating a pixmap in memory, you can do this by multi threading.
You can do this when your application is launched.
Show all the preview's as scrollable tiles on left pane similar to
Powerpoint. You can reduce some coding here by letting Qt render
these preview's by using QLabel.
Have a central widget which occupies the major chunk of the window
which will render the images using your custom algorithm. Your
algorithm will be such that it will read the actual image if the
slider is not running. If slider is running fast enough then you simply need to
scale your preview images and display in the widget.
Feel free to ask questions if you find anything difficult to understand. :)

Related

Mac Rounded Texture Button with custom image on inactive window

I can see that most apps use Rounded Texture Button for Toolbar commands on macOS. However I can't make those buttons look fully native if I use a custom image (vector or bitmap). The problem is that if the window is inactive, image is still painted the same and not semi-transparent. This works fine if I use the system provided images, so my guess is that it has something to do with the image definition, but I have tried various things (like using Assets or Resources, using vector and bitmap images) and still no success. As said I guess it is something simple, but hard enough that I can't find it, can anyone help?
You need to set the image as template image. Only then AppKit is able to render the image correctly in every circumstance.

Firefox Addon manager blurry icons

I created an extension for Firefox and made a simple icon for it.
But when I tested it in the Addon manager the icon appeared blurry despite my source image was fine.
I started to experiment with different sizes and shapes of the icon.
Figured out that the icon container is 48x48 pixels and the default addon icon is 32x32.
But for any experiments the result was the same.
So I created a simple rectangle icon drawing it by pixels so it shouldn't blur anyway:
But the result blurred again:
There is some sub-pixels around the rectangle though the border should be crisp...
In pixels view:
Also I found the default extension icon (a puzzle piece) and in pixels it looks perfect but in the manager the borders are blurred a little though it's not obvious at first glance.
Are you sure this is not happening when you save the image? I don't know what app you are using, but many photo apps try to compress jpm images when you save them by default. Check this first.
Usually this does not happen with png images, so you could try using a png image instead as well.
It was silly enough... The broblem was the page scale not 100% on the Addons page. Pressed Ctrl+0 and all restored.
It happens sometimes on other web pages when I zoom in/out the view and images lose their sharpness.

Showing a high resolution image in WP8?

In my Windows phone 8 app, I am binding web-URL to Image control.
I have two pages, on first page i am binding a low resolution image(I Have web-URL of multiple resolutions). On next page I have to show the same Image in full screen mode so I am binding high resolution image URL. But it takes some time to load.
Then I tried to bind the same low resolution image which I have on previous page to this Full screen Image Control and then binding the high resolution image.
So my problem is here, when I am adding a low res image, its getting displayed and then I am binding a high res image. so for some time no image is appear.
Please suggest, How can i show the continuous image, Image should not be disappear.
You should use the MultiScaleImage control or wait until your High-Res image completes downloading, then re-bind your control.
I would recommend using two Image solution. Place your lo-res image into visible Image control and place your hi-res image into hidden Image control. Once hi-res image is loaded you can hide lo-res image and show hires one. For extra smooth user experience you can use animations to cross-fade images.
Subscribe to ImageOpened event so you know then image is loaded.

Center image horizontally & vertically on page with % margins and be resizable with window

It seemed so simple just a day ago, but I can't figure it out:
How do I center an image on a page, giving it fixed % margins (10% on all sides) and still have it scale with the window on resize?
It's very important that the page and the image display well on all platforms, without scrollers (!).
The page itself is very simple and only contains the image (which on different versions of the page has different dimensions), and a bar on the top with a link to send it to another page.
The max size of the image would be 1500x1000px, no minimum size.
I wholeheartedly hope someone can help me out with this, thanks so much!
Best way to do that is using JavaScript. Get the window size, subscribe for window.onresize event and update the image size and position accordingly.
Using CSS only will NOT work, because any position properties depend on the container. In your case the container is the window, which will size itself based on the content. This creates a sort of circular dependency (window size depends on the image, the image size and position depend on the window size).
For information about getting the exact available window size in cross-browser way you could check this post: Get the size of the screen, current web page and browser window - haven't done that in a while to provide you with exact code.
Also note that you don't mention keeping the aspect ratio of the image. If it should not be maintained there is no way to do it HTML/CSS only, because all operations with them do maintain AR of images.

Will reusing a UIImage in the thumbnail version of the image be faster?

I have a huge amount of images of size 768 by 1024.
I want to make a scroll view with their thumbnailed versions as programmatically generated buttons.
Now my question is:
Should I make a thumbnail for each image and add these as a resource and create my buttons using these small (100x100 pixel) versions or should I use the same big images but just make the button of size 100x100?
Will the second one try to load the whole big image first and then resize it?
Thanks
You probably want to see this stack post re lazy loading of images in UIScrollView:
UIScrollView lazy loading of images to reduce memory usage and avoid crash
Also see the UIScrollView sample apps and discussion. They cover this issue

Resources