Hi Jason,
another adavantage of the default is that the cached image can be used
for multiple items with different sizes using the same image by default.
Regards,
Gunnar
QR Code with ALL the bits. Scaling blends the edges.
Thanks, so that gets requestedSize to stop being (-1, -1) and my code
works.
I still would have assumed that initially the sourceSize would be
equivelent to the item's size? Pixel for pixel is not an unreasonable
default?
Well, the name source size implies for me the size of the source, but I
am not a native speaker.
Pixel for Pixel is an reasonable default imho, as width and height, if
not set explictly are using the source size of the image.
The default is made in a way, that an image item by default uses the
image natural size, if no height, width or sourceSize is set.
Why does your application use images, which need to be scaled up or
down? This hurts quality and performance.
Hi Jason,
it seems you missed this in the docs:
sourceSize : QSize
This property holds the actual width and height of the loaded image.
Unlike the width
<https://doc.qt.io/qt-5/qml-qtquick-item.html#width-prop> and height
<https://doc.qt.io/qt-5/qml-qtquick-item.html#height-prop> properties,
which scale the painting of the image, this property sets the actual
number of pixels stored for the loaded image so that large images do
not use more memory than necessary. For example, this ensures the
image in memory is no larger than 1024x1024 pixels, regardless of the
Image's width
<https://doc.qt.io/qt-5/qml-qtquick-item.html#width-prop> and height
<https://doc.qt.io/qt-5/qml-qtquick-item.html#height-prop> values:
Rectangle {
width: ...
height: ...
Image {
anchors.fill: parent
source: "reallyBigImage.jpg"
sourceSize.width: 1024
sourceSize.height: 1024
}
}
Regards,
Gunnar Roth
------ Original Message ------
From: "Jason H" <[email protected]>
To: "interestqt-project.org" <[email protected]>
Sent: 26/02/2019 19:42:42
Subject: [Interest] QQuickProviders and proper drawing / caching?
I've got a custom QQuickImageProvider that I want to have always rendered at
native resolution.
However on every call requestedSize is QSize(-1, -1) forcing me to use my
default resolution which then gets scaled, which gives me fuzzy pixels.
I thought maybe fillMode was an issue, but is it not. Even with an explicit
height and width in the Image, it never changes from QSize(-1, -1).
Then, I was reading the docs and it says
'''
Image Caching
Images returned by a QQuickImageProvider are automatically cached, similar to any image
loaded by the QML engine. When an image with a "image://" prefix is loaded from
cache, requestImage() and requestPixmap() will not be called for the relevant image
provider. If an image should always be fetched from the image provider, and should not be
cached at all, set the cache property to false for the relevant Image, BorderImage or
AnimatedImage object.
'''
However setting cache: false in the Image element does not change anything.
I've also set
painter.setRenderHint(QPainter::Antialiasing, false);
painter.setRenderHint(QPainter::SmoothPixmapTransform, false);
In painter and I still get blurry output. I want aliased pixels like in the
Concentric Circles example.
I've tried various achorings, fillModes, widths and heights.
Does anyone have any pointers? I would expect that the requested size be the
pixel dimensions of the Image requesting it?
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest