Author Topic: Compressed image as DATA in own source code  (Read 4940 times)

0 Members and 1 Guest are viewing this topic.

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Compressed image as DATA in own source code
« on: December 21, 2019, 05:13:14 pm »
Hi.
I developed my own compression routine for simple images. It doesn't work for complex photos, but for simple pictures like the one in the attachment. On purpose. How to insert the attached image into the source code while preserving the size of the source code 19044 bytes (of course, it could be created using internal commands, but we are talking about inserting the photo into the source code).

Code: QB64: [Select]
  1. DATA 592,435: 'width, height
  2. DATA 2205,5,2205: 'UBOUNDy pro Popis, PoleBarev, PrepniBarvu, v tomto poradi je to dale zapsano
  3. '    PRINT PoleBarev(Load2)
  4.  
  5. FOR Load3 = 0 TO UPrepniBarvu
  6.     READ pb$
  7.     PrepniBarvu(Load3) = VAL("&H" + pb$)
  8.  
  9. RESTOREPIC width, height, popis(), PoleBarev(), PrepniBarvu()
  10.  
  11. SUB RESTOREPIC (sirka, vyska, popis() AS LONG, PoleBarev() AS _UNSIGNED LONG, PrepniBarvu() AS LONG)
  12.     SCREEN _NEWIMAGE(sirka, vyska, 32)
  13.     j = -1
  14.     MaximalniOffset = MAXSIZEOF(PrepniBarvu())
  15.     DIM i AS LONG
  16.     FOR h = 0 TO vyska - 1
  17.         FOR w = 0 TO sirka - 1
  18.             'vyhledat, jestli mam prepnout barvu
  19.  
  20.             IF i < MaximalniOffset THEN
  21.                 FOR T = OldT TO UBOUND(prepnibarvu)
  22.                     IF i = PrepniBarvu(T) THEN
  23.                         j = j + 1
  24.                         COLOR PoleBarev(popis(j))
  25.                         OldT = T
  26.                     END IF
  27.  
  28.                     IF PrepniBarvu(T) > i THEN EXIT FOR
  29.                 NEXT T
  30.             END IF
  31.  
  32.             PSET (w, h)
  33.             i = i + 1
  34.     NEXT w, h
  35.  
  36. FUNCTION MAXSIZEOF (a() AS LONG)
  37.     FOR t = LBOUND(a) TO UBOUND(a) - 1
  38.         IF MAXSIZEOF < a(t) THEN MAXSIZEOF = a(t) + 1
  39.     NEXT
  40.  

 
haus.bmp


Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Compressed image as DATA in own source code
« Reply #1 on: December 21, 2019, 06:29:51 pm »
When we finally update to v1.4, QB64 will come with ZLIB compression routines included.  Then you’d be able to just do something like:

DIM m AS _MEM: m = _MEMIMAGE(imagehandle)
temp$ = SPACE$(m.SIZE)
_MEMGET m, m.OFFSET, temp$ ‘Put the image to a temp string

compressed$ = _DEFLATE(temp$) ‘compress it

uncompressed$ = _INFLATE(compressed$) ‘uncompress it
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #2 on: December 21, 2019, 06:53:00 pm »
Hi Steve.
I'll take a look at this feature. I realized that further compression could be achieved by expanding the set of letters. So to be more precise, let's give it the HEX$ command. It uses a maximum of F as the number 15. I'm thinking of a custom function that would use other letters to distinguish a value. The 16-bit HEX$ is an inspiration for me, but there is an obvious possibility of expansion. Writing number 15 would still be F, but number 16 would be G ... well I'll try to think about it again. The point is to use the full range, which is directly viewable in a text mode editor for this purpose.

And you're talking about it. Of course I was inspired by the GIF compression algorithm. As always, I did it in my own way, so as how I understand it.
« Last Edit: December 21, 2019, 06:56:33 pm by Petr »

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Compressed image as DATA in own source code
« Reply #3 on: December 21, 2019, 07:05:53 pm »
A-Z is 26 letters
a-z is 26 more.
0-9 is 10 more.
Add 2 more characters you like (@#), that’d give you a total of 64 characters, which would be a nice expansion over 16-character hex$, and still a nice power of 2.  ;)
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline AndyA

  • Newbie
  • Posts: 73
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #4 on: December 22, 2019, 09:32:18 pm »
Hi guys,

It looks to me as if you are re-inventing Base64 encoding. It's supported by most browsers.

The main advantage over Hex is that Base64 is 66% smaller due to more bits are being used when encoding, as Steve mentioned. 6 bits vs. 4 bits.

Base64 is standardized (for the most part) and can be used to paste images or zip files in the browser search window. Correct mime-type must be specified. See: https://en.wikipedia.org/wiki/Base64
and also https://en.wikipedia.org/wiki/Data_URI_scheme


In this example the image is specified as a jpeg. To view the image, copy and paste the date into the browser search window.

Using Chrome:
1) Copy the data from the code box below.
2) Open Chrome and right click in the search window (where you type your question or URL)
3) From the pop-up menu, select "Past and go..."
4) A new tab shows up with the decoded image. You can right click on the image and save to disk.


Curly Fern IFS image: 100x75
Code: [Select]
data:image/jpeg;base64,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
I've already posted a few version of Base64 encoded files for:
Blitz Basic  https://socoder.net/?Snippet=33278
SDL Basic  http://sdlbasic.epizy.com/showthread.php?tid=398
JustBasic (link no longer available as old forum was closed)

Currently working on the QB64 version. Would like to create in an InForm GUI eventually.
« Last Edit: December 22, 2019, 11:39:53 pm by AndyA »

FellippeHeitor

  • Guest
Re: Compressed image as DATA in own source code
« Reply #5 on: December 22, 2019, 10:00:01 pm »
Would like to create in an InForm GUI eventually.

That'll be cool! Let me know if I can be of assistance.

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #6 on: December 23, 2019, 03:46:21 am »
Hi, yes, I'm going to try something like that. Because I will try this for the first time, it is certain that I will come to a dead end several times. I will now only try this thing during the Christmas holidays. Thank you for links, AndyA, now i try to do it compatible. It is very helpfully for me.

Offline AndyA

  • Newbie
  • Posts: 73
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #7 on: December 23, 2019, 08:25:02 am »
Hi Petr,

I will be posting QB64 code as soon as possible, probably this evening or tomorrow evening.

This will make it easier to add to your own programs, if desired.

But what this utility really needs is a GUI to allow end user to make output choices with a mouse click, instead of editing source code. Think InForm. Thanks Fellippe!

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #8 on: December 23, 2019, 01:47:22 pm »
Hi AndyA,

I have studied BASE64 coding several times. It's basically a different compression than the one I used in the code above, but I've done my own BASE64 decoder (which only converts integer numbers up to 999999999 to BASE64 characters so far). I will also try to create BASE64 data compression itself, in parallel with you. It's an absolutely brilliant way I studied it that way. I like it very much.

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #9 on: December 24, 2019, 08:05:44 am »
Hi AndyA, i do some experiments with this your link

Quote
Curly Fern IFS image: 100x75
Code: [Select]
data:image/jpeg;base64,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

in my program with this output: My program write jpg file correctly, jpg is visible using windows photo viewer, but QB64 can not load this image, because is uncompatible with _LOADIMAGE.

 
extracted image.jpg


And as me reply, please try
Code: [Select]
data:image/jpeg;base64,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
« Last Edit: December 24, 2019, 08:10:15 am by Petr »

Offline AndyA

  • Newbie
  • Posts: 73
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #10 on: December 24, 2019, 06:37:55 pm »
I get the same error that you do.

Here is the QB64 code I used to test:
Code: QB64: [Select]
  1. SCREEN _NEWIMAGE(400, 300, 32)
  2.  
  3. 'This is the image I saved from Chrome using the posted data:image URI
  4. imgName$ = "CurlyFern_100x75_fromDATA_URI.jpg"
  5.  
  6. imgHandle& = _LOADIMAGE(imgName$, 32)
  7. PRINT imgHandle& '<--- not loading???
  8. _SOURCE imgHandle&
  9.  

I also tested in BlitzPlus Basic and MS Paint, and it worked.
Code: Text: [Select]
  1. Graphics 400,300,32,2
  2. SetBuffer BackBuffer()
  3.  
  4. img% = LoadImage("CurlyFern_100x75_fromDATA_URI.jpg")
  5.  
  6. DrawImage img%,150,112
  7. Flip
  8. WaitMouse()
  9.  
  10. End

So I tend to think that it may be an incomplete .JPG (from data:image URI) that the QB64 JPG image loader has trouble with, and the others (MS Photo Viewer, MS Paint, BlitzPlus Basic) can decode.

The reason I say incomplete is because, from the image you posted, it looks very slightly cropped at bottom compared to the original .JPG I used to make the Base64 encoding. This may be due to the manual process I used to strip the word DATA and the double quotes in MS WordPad from the QB64 encoded image output.

I'll do more testing after Christmas to try and determine the issue.
« Last Edit: December 24, 2019, 06:48:35 pm by AndyA »

Offline Petr

  • Forum Resident
  • Posts: 1720
  • The best code is the DNA of the hops.
    • View Profile
Re: Compressed image as DATA in own source code
« Reply #11 on: December 25, 2019, 04:23:43 am »
Just compare the size of the original file with the output size the image am sent here. And it is certainly enough after Christmas. And if the size is the same, it is a beautiful opportunity to try HEX editor from Eoredson :)