[Gambas-user] Picture.ToString() ?

Benoît Minisini benoit.minisini at gambas-basic.org
Mon Jan 1 18:48:23 CET 2024


Le 01/01/2024 à 15:02, BB a écrit :
> 
> On 1/1/24 11:26 pm, Bruce Steers wrote:
>>
>>
>> On Mon, 1 Jan 2024 at 05:46, BB <adamnt42 at gmail.com 
>> <mailto:adamnt42 at gmail.com>> wrote:
>>
>>     On 30/12/23 11:15 am, Bruce Steers wrote:
>>>     If there any simpler (non-file) way to get the opposite of
>>>     Picture.FromString()
>>>     I wanted a way to transmit image data using Print in Task.class.
>>>
>>>     This works for me but wondered if there was a faster way than a
>>>     physical file?
>>>
>>>     Public Sub PictureToString(Pic As Picture) As String
>>>
>>>       Dim sTmp As String = File.SetExt(Temp("tmp-pic"), "png")
>>>       Pic.Save(sTmp)
>>>       Return File.Load(sTmp)
>>>
>>>     End
>>>
>>>     Respects
>>>     BruceS
>>>
>>     Ohohoo and a happy new year.
>>
>>     For something to do I have waded through the QT4 and GTK Picture
>>     classes. It appears to me that adding a ToString() method for QT
>>     would be a simple ("hahaha" said the so-called C expert) matter as
>>     the underlying buffer into which the file is loaded does not
>>     appear to be destroyed while the Picture exists and it is
>>     essentially a byte array. Now for GTK, guess what?! The initial
>>     buffer is released after it is loaded and converted to a picture!
>>     So it is not going to be so simple to create a way to develop a
>>     simple ToString().
>>
>>     I accept that this does not advance towards a solution but it may
>>     relieve some of your angst about the implied "Why isn't?
>>
>>     cheers
>>
>>     b
>>
>>
>> I see , cheers :)
>> It seems we already have the code though for all toolkits. just only 
>> with a file save/load.
>> Either Picture.Save() (and Image.Save()) or File.Load() is already 
>> doing the job of converting to string.
>>
>> So could whatever method it is that's doing the conversion be exposed 
>> as a function we could all use? to get the string data rather than 
>> saving it to a file.
>>
>> Respects
>> (and happy new year all :) )
>>
>> BruceS
>>
> Not quite. Both toolkits "load" a picture via a simple file read i.e 
> initially they are both in for want of a better word, a contiguous 
> memory gob of bytes. The conversion is quite different in both cases. 
> It's just that the QT libraries "keep" the gob available while the 
> picture exists, as a Qsomething (I forget and its late) whereas in gtk 
> after the gob is converted it is lost. I suppose , if you were using QT 
> you could write the appropriate low level interface (and go bonkers in 
> the process) but it is already there in the gb.qt4 CPicture. But in the 
> gtk CPicture it aint.
> 
> b
> 

I'm currently adding the 'ToString()' methods for both toolkits and both 
Picture and Image classes. But it's not finished.

Regards,

-- 
Benoît Minisini.



More information about the User mailing list