[Qt-qml] Can you access the Image element's cached QImage/QPixmap from C++ code?
T C
teeceeare97 at gmail.com
Tue Jan 18 04:53:51 CET 2011
The problem for me is that the default implementation of
QDeclarativeImageProvider is too much of a black box. That code does
a lot of useful things and I would like to be able to take advantage
of the work that it has already done, rather than re-implement it in
parallel (and waste double the memory).
If you put caching and async loading properties into the "public"
Image element "api", then it makes no sense at all to hide the actual
QImage/QPixmap from C++ code. Wouldn't it be very likely that any
conceivable custom implementation of QDeclarativeImageProvider would
still probably want to reuse the cache and background-loading feature
of the default implementation?
Was hoping there'd be something like
"pImageItem->getImageProvider()->getQImage()" that I could use after
locating the image item in the QML item tree.
BR,
Todd
On Mon, Jan 17, 2011 at 2:11 AM, <bea.lam at nokia.com> wrote:
> There isn't a way to access these images from the C++ API at the moment. You might be interested in watching/voting/commenting on http://bugreports.qt.nokia.com/browse/QTBUG-12031.
>
> regards,
>
> Bea
>
> On 14/01/2011, at 7:47 AM, ext T C wrote:
>
>> There's definitely a QImage somewhere, I just don't have direct access
>> to it. I'm just asking if I have to write the networking code to
>> fetch the image again, or if I can reach into the cache somehow and
>> get it directly. In this case it's always going to be a cache hit, as
>> the image was originally loaded by a QML Image item.
>>
>>
>> On Thu, Jan 13, 2011 at 4:34 PM, Jason H <scorp1us at yahoo.com> wrote:
>>>
>>> I'm not sure what you mean. If there is a QImage, then it has an image, and you can call QImage::save(). The cache itself is maintained by QNetworkAccessManager and QNetworkDiskCache. If it is cached, then you could ask for it by URL and would get the cached version. If not, then it has to go get it again anyway...
>>>
>>> I'm not sure I understood you though.
>>>
>>>
>>> ________________________________
>>> From: T C <teeceeare97 at gmail.com>
>>> To: qt-qml at qt.nokia.com
>>> Sent: Thu, January 13, 2011 3:23:13 PM
>>> Subject: [Qt-qml] Can you access the Image element's cached QImage/QPixmap from C++ code?
>>>
>>> Say your QML gui has a section with an Image element whose source points to some internet image (http://somwhere/myphoto.jpg for example). When the Image item is instantiated the default image provider retrieves it (in the background maybe) and then it is painted when ready. The QImage is then cached somewhere by the image provider using the source url as the key. Later on I would like my C++ code to be able to save this image to permanent storage, if the user chooses to do so. Is there a way to do this by directly accessing the cached QImage?
>>>
>>> I understand that I can write a custom image provider and plug that in to the QML app context, but I really don't want to redo all the stuff that loads remote images in background threads if I don't have to. Is there an easier way?
>>>
>>>
>>>
>> _______________________________________________
>> Qt-qml mailing list
>> Qt-qml at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>
>
>
More information about the Qt-qml
mailing list