JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

jxl-art

monad
2021-09-19 07:47:21
25941 snake spline points, 28289 bytes
2021-09-19 07:47:48
10293 snake spline points, 29764 bytes
2021-09-19 07:48:34
Why does the file size increase?
_wb_
2021-09-19 07:49:05
Points are delta encoded
2021-09-19 07:49:28
And then ANS encoded, all in the same ctx, iirc
2021-09-19 07:50:20
hybriduint means small values can get good entropy coding, large values have bits signaled raw
monad
2021-09-19 07:53:39
that's fun
_wb_
2021-09-20 11:24:28
Are that splines in the qr code, <@288069412857315328> ?
w
2021-09-20 11:24:42
yes
_wb_
2021-09-20 11:29:20
Challenge: do an artistic qr code in 128 bytes (likely without splines)
2021-09-20 11:29:44
8x upsampling might give interesting results
w
2021-09-20 11:30:21
i tried with a tree. it's always worse than cjxl on a png
2021-09-20 11:33:54
with a lower limit ~ 400 bytes
2021-09-20 11:59:11
here's "128 bytes" in 128 bytes `cjxl -m -g 0 -I 1 -e 9 -P 7 --override_bitdepth 10 --patches=0`
2021-09-20 11:59:33
_wb_
2021-09-20 01:02:14
2021-09-20 01:02:41
2021-09-20 01:04:19
created from a 8x smaller png with `cjxl -q 100 --resampling 8 --already_downsampled --override_bitdepth 1 -s 9 -R 1 --patches 0 -I 1 -P 3`
Traneptora
2021-09-21 09:49:27
2021-09-21 09:49:40
2021-09-21 09:50:08
These are *really* small files
2021-09-21 09:50:10
how does this work?
fab
2021-09-21 09:51:42
By context meta prediction
2021-09-21 09:52:58
Basically you specify bitdepth with a tool like the one you can build with libjxl or the site surmajxlart .web.technology
2021-09-21 09:53:14
He's the dev of squoosh.app
2021-09-21 09:54:22
If you have any question there is a guide in the same site you write Discord when you're posting the image and publish the jxl
2021-09-21 09:55:00
And in Channel <#824000991891554375> will show a preview in jpg
2021-09-21 09:55:39
And a link with the hash like
2021-09-21 09:56:06
The meaning of compo for jon sneyers Is that
2021-09-21 09:56:13
Competition
_wb_
2021-09-21 10:14:51
haaaaah
2021-09-22 01:19:16
Wondering about the choice of splnes. While I think it's definitely not bad (definitely better than the standard but unintuitive beziers!), why not something that's even better: Ralph Leviens spline: https://spline.technology/ Demo: https://spline.technology/demo/ Blogpost: https://raphlinus.github.io/curves/2018/12/21/new-spline.html It's a combination of his earlier spiro curve implemented in inkscape among others, and κ-Curves used in Adobe Illustrator curvature tool
w
2021-09-22 02:09:43
I think the best thing to have for splines in jpeg XXL is to have floating point control points
haaaaah
w I think the best thing to have for splines in jpeg XXL is to have floating point control points
2021-09-22 02:14:29
Is XXL the next-next codec? 😋
_wb_
2021-09-22 05:28:27
Heh no, no plans for that yet
2021-09-22 05:31:06
I doubt there will be a jpeg XXL, I think/hoping if jxl can last long enough to be eventually replaced by neural codecs that directly stimulate your brain instead of bothering with pixels and displays
w I think the best thing to have for splines in jpeg XXL is to have floating point control points
2021-09-22 05:36:35
Would 1/8 pixel precision be enough? Because maybe we can still make that work, we still have to resolve something unclear in the spec regarding the interaction between upsampling and splines, and if we make it so that upsampling is done first and splines are interpreted in the upsampled coords, effectively you get up to 1/8 pixel precision
w
2021-09-22 05:40:22
yeah 1/8 sounds good
2021-09-22 06:00:17
although it sounds kind of superfluous since the same result can be gotten effectively by multiplying the coordinates by 8 beforehand
2021-09-22 06:00:40
and in both solutions it would make the image 8x larger which is kinda much
_wb_
2021-09-22 06:06:19
Yes, I guess
2021-09-22 06:07:07
In principle we could optimize the upsampling away if the image is to be rendered at a lower resolution, but I doubt that will happen in practice
Scope
2021-09-22 09:59:15
However, as real-world experience shows, there are usually things that couldn't have been predicted at the design stage And understanding what can be improved, added or changed will only come after the format has been in practice for a long time, and most likely a new format every 10 years will be practically better than a format that was planned 30 years or more in advance Because requirements may change unpredictably, new research and more efficient algorithms may appear in the meantime, old patents may expire, etc It would be interesting to use some draft format in some limited application for some time, like 2-3 years and only then release all corrections and improvements that became clear after such practical use, although this is not always easy for many reasons However, there have been cases like this, even WebP was used for a while (e.g. in Opera for Turbo mode) and changed for the first couple of years, also the incoming HTTP/3, which is based on QUIC 2012, which has been improved and changed mostly only on Google services
JXL Art Bot
2021-09-23 06:49:57
**\_wb\_** _“Subsample This Chroma, Biatch!”_ 2021 image/jxl 33 bytes https://jxl-art.surma.technology/?zcode=C3IOUTDgcsosSUktKMlQsOAKLixNTa1K5QoCS3BlpikkK9gpGFtwKSgA2QFFqWWuRUVAEQOggIKCrkI4lAWUrIQLg7k14TVIAiC1fkg8oAI%2FFGmQguDUEiwiRqamXOgqYCwA
_wb_
2021-09-23 06:50:30
2021-09-23 06:52:31
This one gives funky aliasing/downsampling artifacts when I zoom in and out on the image in the online editor
2021-09-23 06:53:04
Looks very different at the pixel level than zoomed out
Deleted User
2021-09-25 09:10:58
An idea to keep your JXL-art master pieces forever => record them as NFT and copy the base64 bytestream in the description. e.g. https://artion.io/explore/0x61af4d29f672e27a097291f72fc571304bc93521/212
_wb_
2021-09-30 02:27:19
September ends today! Time to submit your entries for <#882173948534603806> , <#882174149374672896> or <#882174448478863370> !
monad
2021-09-30 04:25:25
*didn't it already end*
_wb_
2021-09-30 04:45:17
https://tenor.com/view/shh-secret-chris-pratt-silence-dont-say-gif-17543341
Fraetor
2021-09-30 09:40:47
Another hour and 20 minutes of September where I am.
monad
2021-09-30 09:51:02
*I was referring to the end of the submission period*
w
2021-09-30 09:52:01
september busy times + no submissions :(
monad
2021-09-30 09:57:51
Anyway, if it's going to end at about the time it ended last month, I'll see about submitting something after work--just because Jon is persistent.
JXL Art Bot
2021-10-01 12:46:31
**Retr0id** _“lossless”_ 2021 image/jxl 86 bytes https://jxl-art.surma.technology/?zcode=rVI7FsIwDNtzCl%2BA95qf4y4MXIErUB7dGDLA7YG%2BNE0TUTrQTZLtWLVOY7wM93gjrdR4pScdyfWsiBLwRt5ggo%2BsFcSsFxR3XabynMBSkJmWVe3nO9B5iIRZXY%2BYnmOuimehl0r4Nh3PR9U1s%2B4DXuuGtJv2TjULa2Fk0BqPDVof%2Fm4QVZZVi1oloskDOA88TCLFBmReuN8VkPTrrbid1rfMg%2Fwaz%2BrXUByOGZcdTQpAAkBy2kW2j7WgFw%3D%3D
_wb_
2021-10-01 07:54:23
Last chance to vote for the September jxl art compo! <#882173948534603806> <#882174149374672896> <#882174448478863370>
monad
2021-10-01 11:46:19
Good luck, all.
_wb_
2021-10-02 06:56:29
Congrats <@288069412857315328> and <@193530557026533376> !
w
2021-10-02 06:56:43
<:FeelsWeirdMan:666827205308842008>
_wb_
2021-10-02 07:03:12
What should we do for the October compo?
2021-10-02 07:03:37
How to get more participation?
2021-10-02 07:08:45
What categories should we have?
JXL Art Bot
2021-10-02 07:40:42
**\_wb\_** _“I have no idea what is going on here”_ 2021 image/jxl 26 bytes https://jxl-art.surma.technology/?zcode=C3IOUTDkcsosSUktKMlQsOAKLixNTa1K5eLKTFOoCa9RsANKKyjoKgSn5qQmlyjoQnjhqZnpGSWpKUBJAA%3D%3D
_wb_
2021-10-02 07:42:21
32-bytes is a nice category I think, it's limited in what you can do (no splines for example) but there do seem to be things there left to be explored
2021-10-02 07:43:04
Not sure about 128 and 1024
2021-10-02 07:43:54
Maybe better have 64 and 256?
2021-10-02 07:45:05
Or just do 32 and 'no limit' (though of course smaller is always more impressive)
2021-10-02 07:45:09
?
w
2021-10-02 07:45:37
i think that's better at least
monad
2021-10-02 07:49:43
More participation? Maybe Discord is not the best place to host because it's not public. The JXL subreddit seems a simple alternative. Regardless, it will take time to build interest.
_wb_
2021-10-02 07:50:40
The discord is kind of public, the invite link is right on jpegxl.info and other public places
2021-10-02 07:50:57
But yes, maybe not so easy to find
monad
2021-10-02 07:51:33
Yeah, anyone can join, but the content is not posted publicly.
2021-10-02 07:51:54
So by default you have less eyeball potential.
_wb_
2021-10-02 07:56:17
On reddit it's not really possible to reply with images, right?
monad
2021-10-02 07:56:21
As for categories, I'm a fan of less restriction. IMO, that makes it easier to make more intentional art. The smallest stuff tends toward discovery more than intention.
_wb_
2021-10-02 07:57:09
Yes, less restriction allows more artistic expression
monad
_wb_ On reddit it's not really possible to reply with images, right?
2021-10-02 07:57:35
Oh, not directly, I guess (I'm not really a user myself). But you can link to Imgur or another image sharing site.
_wb_
2021-10-02 07:59:17
More restriction results another kind of creativity, indeed more about discovery and finding/engineering ways to shave off bytes. I think it's good to have both
2021-10-02 07:59:43
Like the traditional 4kb intros, 64kb demos, and unrestricted demos.
Scope
2021-10-02 07:59:52
To raise interest, I once suggested adding more impressive examples and a brief description of the features and how it is made, here: <https://www.pouet.net/topic.php?which=12091> and perhaps to some other demo-maker communities, then perhaps more interested people will join
_wb_
2021-10-02 08:01:16
In 64kb of jxl I suppose you could make a (visual only) demo
monad
2021-10-02 08:03:18
I think one tiny category and one unrestricted category makes sense for now.
2021-10-02 08:03:38
Unrestricted also just means easier to get into.
_wb_
2021-10-02 08:04:10
Maybe bump up the tiny category to some other number of bytes?
2021-10-02 08:04:18
64 bytes maybe
2021-10-02 08:04:20
Or 42
monad
2021-10-02 08:07:11
I'd lean toward 64. Again, it's at least some room for design complexity.
2021-10-02 08:08:47
But this can change between compos of course as the realm of possibility is explored.
_wb_
2021-10-02 08:09:29
I wonder when we're going to start to explore VarDCT jxlart 😅
2021-10-02 08:10:16
all_default headers are vardct, so that's a small advantage there
monad
_wb_ On reddit it's not really possible to reply with images, right?
2021-10-02 08:11:01
linking to Surma's thing should work (duh)
2021-10-02 08:11:56
Only hiccup is animation
_wb_
2021-10-02 08:12:02
Yes, but scrolling through an art thread and having to click on everything to see a preview is not so nice
monad
2021-10-02 08:12:17
Mm, valid.
2021-10-02 08:13:12
Well, Discord is very convenient in that respect. Maybe accept submissions from both places.
_wb_
2021-10-02 08:13:31
Yes, maybe we need a version of <@228116142185512960> 's tool that just lets the browser decode the jxl (which only works if the flag is enabled, but it would make animation work without effort)
monad
monad Well, Discord is very convenient in that respect. Maybe accept submissions from both places.
2021-10-02 08:14:31
Or someone suggest another popular, free platform.
Scope
2021-10-02 08:14:49
It's possible, like here <https://www.reddit.com/r/pics/>, and I think it's easier to put a picture and for example a link to jxl-art.surma.technology in the first comment
_wb_
2021-10-02 08:15:46
A post can have a picture, but a comment cannot
2021-10-02 08:16:04
So you would need one post per entry, which is maybe a bit much
monad
2021-10-02 08:16:54
*maybe*
_wb_
2021-10-02 08:17:10
Then again, we can use https://www.reddit.com/r/jxlart/ for it
2021-10-02 08:17:36
In order not to spam the main jxl reddit
monad
2021-10-02 08:19:17
Lol, there's actually already a sub. Yes, this would be ideal if you do the post=submission thing. Then need some flair or tag (or whatever the lingo is) for users to mark their post as an entry for that month's compo, so it's easy to find them all.
2021-10-02 08:22:33
And this mitigates some bias in the reddit algorithm where a popular comment with a large comment thread can push less popular comments way down the page. Having seperate posts levels things a bit. (not that we'd likely run into that phenomenon any time soon)
JXL Art Bot
2021-10-03 02:18:38
**simnalamburt** _“Hi!”_ 2021 image/jxl 135 bytes https://jxl-art.surma.technology/?zcode=C89MKclQMDQwMODySM1MzyiBsIMLcjLzUgNLE%2FNKMqsSSzLz8xxTskqLS3JT80oUjGDyXApg1QYKFMFBZoqJAggYAiElphgBXQLEUJYFnGUKZpmgsIzgLJA617wUaOiOhjIhU8yALjExhbFGQ4%2F00DM2gLOMRkOPFFPMTWE51wLBArrO3ABZdjREiTcFHHoWMBZabtZVCE4tUTAz4QIA
김지현
2021-10-03 02:18:44
Hi!
_wb_
2021-10-03 02:42:34
👋
nwoeanhinnogaehr
2021-10-04 01:12:37
cross posting to the sizecoding discord might gather some attention
2021-10-04 01:13:18
(I am interested in participating in future competitions but am currently swamped with work)
JXL Art Bot
2021-10-07 09:28:23
**monad** _“I've never tried the publish thing before”_ 2021 image/jxl 572 bytes https://jxl-art.surma.technology/?zcode=lZnNahxHFEb38xT3BQbq%2FtTfJpBAICsTyGLWxlYiQRbGiJC8fdqxxjPSd7zIarqrThejo7s49Pz09Pzx4dPzo%2Fnp8vTx%2BNxrnn55ePrj8dlq1%2BnHPz89vj89%2FW4f7AeLk9lx%2Bevnh7%2BOuzzuzM7228OztdP1yr%2FA%2Fxzb7Sv893G5V79j67bR%2Fls%2Bbt69nP6a%2Brp1OX%2FZ9e%2Fsnt%2F9fOyerw%2B%2FnNVebu9POPu3xftH293q7Y94u%2FL6QH3yLfX6nNuXoHPO%2Fr8OkodeI%2FcH3GRdr44DLufL5e3%2Fp66P3Zb87tzr4tzCzSTOhRsLuDGUa8D1JVwP4ppwNYGrLlxu4HIqV8SFcDGAC%2FXs5MXVi5NnV8%2BtA9fyLbc2eFm7KxfEiee1wMta4mVN8LzmVA7mbw2ZvzWSOPGyOnhefSgH87dK5m9VJ049J3lO9RzkJdRLkOdQzw7zt1zmbzXy0tRLI89NPM8NXuZO5cDzXOJ5riBO5m9O8DKneJkDPM8xlYP5m13mb%2FYkTr0UeJ41lCMvqV6SPKd6Dpi%2FGTJ%2F08mLqxcnz66eG8zfbKUceB5bPI%2BdxInnscDLWKkceB5TPI8ZxMn8jQFexhAvo4Pn0ady5KXUSw3ixPNImL%2BRQznyEuolyHOoZ4f5G96VI8%2Bunht5buK5b%2FDSdykHnvsSz30lcTJ%2FfYKXPlM58NyHeO4jiBMvvYPn3sVzL5i%2FXlM58pLqJclzqueA%2BesxlCMvrl6cPLt6buSlqZdGnpt4rg3zV1vmrxZ4Ke3sos4u7eyizi7t7KLOLu3sos4u7eyizi7t7KLOLu3sos4u7exK8hLqhTq7tLOLOru0s4s6u7Szizq7tLOTOju1s5M6O7Wzkzo7tbNzgpecpRx4Tu3spM5O7eykzk7t7KTOTu3sLPJS6oU6O7Wzkzo7tbOTOju1s5M6O7Wzkzo7tbOTOju1s4M6O7SzY4GXWF25IE48B3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZ%2FsGL76HckmceHbqbNfOdups18526mzXznbqbNfOdups18526mzXzvYiL6VeqLNdO9ups10726mzXTvbqbNdO9sbeWnqhTrbtbONOtu0s40627SzjTrbtLONOtu0s40627SzjTrbtLOPMAauqxfqbNPONups08426mzTzjbqbNPONups08426mzTzj5EA2e3%2BYN37Hc%2FAtxeS7%2B819afFa6f%2FwI%3D
monad
2021-10-07 09:30:37
<@!489921999120891904> RE: https://discord.com/channels/794206087879852103/794206087879852106/894999740075343873
2021-10-07 09:32:22
``` B encoder 19601 pingo -s9 18730 cwebp -z 9 1609 cjxl -d 0 -e 9 -E 3 -I 1 -g 3 572 jxl_from_tree (handwritten MA tree) 215238 Chrome JPEG (lossy preview)```
veluca
monad ``` B encoder 19601 pingo -s9 18730 cwebp -z 9 1609 cjxl -d 0 -e 9 -E 3 -I 1 -g 3 572 jxl_from_tree (handwritten MA tree) 215238 Chrome JPEG (lossy preview)```
2021-10-07 10:52:09
I'd be curious to see the difference between the hand-written tree and the computed one...
sofia eris bauhaus
monad ``` B encoder 19601 pingo -s9 18730 cwebp -z 9 1609 cjxl -d 0 -e 9 -E 3 -I 1 -g 3 572 jxl_from_tree (handwritten MA tree) 215238 Chrome JPEG (lossy preview)```
2021-10-07 11:11:30
awesome <:BlobYay:806132268186861619>, thank you 😊 !
_wb_
2021-10-07 12:04:49
The computed one does not use offsets, right? So all nodes are +0...
monad
veluca I'd be curious to see the difference between the hand-written tree and the computed one...
2021-10-07 02:35:15
computed:
_wb_
2021-10-07 02:49:19
note that of course in non jxl_from_tree cases, residuals do not have to be all-zeroes
2021-10-07 02:50:06
for that first row case, it would be nice if we could add syntax to jxl_from_tree to write a repeating sequence of residuals
2021-10-07 02:50:53
so that you can basically have for the y==0 case something like `- Set Repeat { 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 }`
veluca
monad computed:
2021-10-07 05:09:32
interesting...
monad
_wb_ so that you can basically have for the y==0 case something like `- Set Repeat { 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 }`
2021-10-09 08:20:11
The tree is allowed to reference residuals? Sounds funky. Syntax for that might be useful in some cases. In the case above, you'd need 610 pixels to tile the row--so it wouldn't really be less writing effort and I'd be surprised if it compressed better.
_wb_
2021-10-09 08:27:02
It will certainly compress better than making almost as many tree nodes as pixels
2021-10-09 08:29:24
But in particular, residuals can use lz77 so in a case like this where they are repetitive, you would only encode 18 values and the rest of the row would be a lz77 at distance 18 of length 592
monad
2021-10-09 08:05:38
If you could just LZ77 the whole row, that should compress well. But I think I wasn't clear: the 18 pixel example you gave does not repeat across the row. The row is 987 pixels wide and you'd need to encode the first 610 values to naively match the rest of the row.
_wb_
2021-10-09 08:09:09
Ah, well you can just lz77 the whole row and then go back to the MA tree (you would just have - Set 0 for the first row, and encode residuals with lz77)
Cool Doggo
**monad** _“I've never tried the publish thing before”_ 2021 image/jxl 572 bytes https://jxl-art.surma.technology/?zcode=lZnNahxHFEb38xT3BQbq%2FtTfJpBAICsTyGLWxlYiQRbGiJC8fdqxxjPSd7zIarqrThejo7s49Pz09Pzx4dPzo%2Fnp8vTx%2BNxrnn55ePrj8dlq1%2BnHPz89vj89%2FW4f7AeLk9lx%2Bevnh7%2BOuzzuzM7228OztdP1yr%2FA%2Fxzb7Sv893G5V79j67bR%2Fls%2Bbt69nP6a%2Brp1OX%2FZ9e%2Fsnt%2F9fOyerw%2B%2FnNVebu9POPu3xftH293q7Y94u%2FL6QH3yLfX6nNuXoHPO%2Fr8OkodeI%2FcH3GRdr44DLufL5e3%2Fp66P3Zb87tzr4tzCzSTOhRsLuDGUa8D1JVwP4ppwNYGrLlxu4HIqV8SFcDGAC%2FXs5MXVi5NnV8%2BtA9fyLbc2eFm7KxfEiee1wMta4mVN8LzmVA7mbw2ZvzWSOPGyOnhefSgH87dK5m9VJ049J3lO9RzkJdRLkOdQzw7zt1zmbzXy0tRLI89NPM8NXuZO5cDzXOJ5riBO5m9O8DKneJkDPM8xlYP5m13mb%2FYkTr0UeJ41lCMvqV6SPKd6Dpi%2FGTJ%2F08mLqxcnz66eG8zfbKUceB5bPI%2BdxInnscDLWKkceB5TPI8ZxMn8jQFexhAvo4Pn0ady5KXUSw3ixPNImL%2BRQznyEuolyHOoZ4f5G96VI8%2Bunht5buK5b%2FDSdykHnvsSz30lcTJ%2FfYKXPlM58NyHeO4jiBMvvYPn3sVzL5i%2FXlM58pLqJclzqueA%2BesxlCMvrl6cPLt6buSlqZdGnpt4rg3zV1vmrxZ4Ke3sos4u7eyizi7t7KLOLu3sos4u7eyizi7t7KLOLu3sos4u7exK8hLqhTq7tLOLOru0s4s6u7Szizq7tLOTOju1s5M6O7Wzkzo7tbNzgpecpRx4Tu3spM5O7eykzk7t7KTOTu3sLPJS6oU6O7Wzkzo7tbOTOju1s5M6O7Wzkzo7tbOTOju1s4M6O7SzY4GXWF25IE48B3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZwd1dmhnB3V2aGcHdXZoZ%2FsGL76HckmceHbqbNfOdups18526mzXznbqbNfOdups18526mzXzvYiL6VeqLNdO9ups10726mzXTvbqbNdO9sbeWnqhTrbtbONOtu0s40627SzjTrbtLONOtu0s40627SzjTrbtLOPMAauqxfqbNPONups08426mzTzjbqbNPONups08426mzTzj5EA2e3%2BYN37Hc%2FAtxeS7%2B819afFa6f%2FwI%3D
2021-10-09 10:22:56
was curious and got this down to 176 bytes with cjxl 👍
monad
2021-10-10 04:50:20
<@!415302089523331092> Well, share the parameters! I had noticed adding `--override_bitdepth 1` to the command I posted helped a lot, but only down to about 1KB.
Cool Doggo
2021-10-10 04:51:18
``-d 0 -g 3 -e 9 -P 8 --override_bitdepth=1 --patches=0``
monad
2021-10-10 04:52:38
P8, eh
2021-10-10 04:58:21
I've had an idea since yesterday to make the jxl_from_tree version smaller, which I wanted to try today, but it wouldn't have been that small.
Cool Doggo
monad computed:
2021-10-10 05:04:09
how did you get the tree for this?
monad
2021-10-10 05:08:50
Compile and run benchmark_xl with `kPrintTree = true` in `enc_encoding.cc`. Might also need `kWantDebug = true`, I just flipped both without investigating.
2021-10-10 05:11:06
All I had to go on to find that was this comment: https://discord.com/channels/794206087879852103/803663417881395200/832486352075358251
Cool Doggo
2021-10-10 05:12:03
neat,
_wb_
2021-10-10 06:17:20
adding some option to have nonzero residuals in jxl_from_tree could be interesting. E.g. if you can specify that the residuals are 0, 1, 0, 1, 0, 1 repeating
2021-10-10 06:17:44
Then it would also be useful to expose the multiplier in tree nodes
2021-10-10 06:19:55
Something like `- W 5` actually means "set pixel to W + 5 + 1 * residual"
2021-10-10 06:20:54
Currently it just sets all residuals to zero, which compresses very well, but something like a short repeating sequence would also compress very well
2021-10-10 06:22:16
And the multiplier can be any positive integer (it's how we do quantization in lossy modular)
JXL Art Bot
2021-10-10 07:40:42
**\_wb\_** _“Progress Pride Flag”_ 2021 image/jxl 131 bytes https://jxl-art.surma.technology/?zcode=hVFBCoMwELzvK%2FYDQrIm2lOhLYUeioe24FmqrUKhQnNof1%2BjSdRIMJddJrObyczlcEMO%2B0aVVatqjCFvyq5yRgJOVfOsFUpOsHu1dQHZW52LjwJoHnjHLRJGeK0Uphr4dcBG2o6nzLYkHRoLhwqSdg1D03CzL0pMw0ylIJX5I2GqvzQOMmNvQq4%2Bb5ki%2FCfyqARTgyLMjtib89XT9orpi7wrznJLoS4VowEmKczEWa4gwP44cUYCjrjmcUoXxg%2BECPNh3aDBi12Mprv8aSlnKmtmjXQ%2Bez9ZjzuBPw%3D%3D
2021-10-10 09:54:19
**\_wb\_** _“Belgian flag”_ 2021 image/jxl 32 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOQKz0wB0uZmFlweqZnpGSUKpoZGXFyZaQrJCnZAaQUFXYXg1BIFAyALKFgBFDQyNQVywFyQGgMwBy5ramgIFUDWisyHySPzYCoB
2021-10-10 09:58:57
**\_wb\_** _“French flag”_ 2021 image/jxl 33 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOQKz0wB0uZmFlweqZnpGSUKpoZGXFyZaQoVCnYKRqamXAoKUI6poSGQA%2BYmA7kGYI6Cgq5CcGoJGg%2BiEMGGakEXRmgGAA%3D%3D
2021-10-10 10:00:50
**\_wb\_** _“Italian flag”_ 2021 image/jxl 35 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOIKz0wB0uZmFlweqZnpGSUKpoZGXFyZaQoVCnYKRqamXAoKUI6poSGQA%2BYmA7kGYI6Cgq5CcGoJGs%2BYC5UN1WLIha4Bq1lGaCYDAA%3D%3D
2021-10-10 10:13:35
**\_wb\_** _“Swiss flag”_ 2021 image/jxl 55 bytes https://jxl-art.surma.technology/?zcode=fU4rEoAgFOycYi%2FgDG%2F8jMlgshs8gKDSDAS9vegIIoKJ%2FbFvW6WFXPUCYoMS5q05Z51U86IvyNSEEQ04AwzcDaTyJI5WNwUy9FLDMmNvLzsMuAh5EScWdeGJ7loof0tf8ZyqwLAfKKHz8OoWrYmXJEemZv4OTU%2BN1fnKg23DAQ%3D%3D
2021-10-11 11:28:41
**mmmnad** _“_"This piece is thusly __christened___ I've never tried the `_“${title.value}”_` thing before 2: Episode II: **attack** of the welp, I tried <:PepeHands:808829977608323112> _ ... guess that's enough ||<:BanHammer:805396864639565834>:computer:|| for tonight <https://youtu.be/dQw4w9WgXcQ>"_”_ 2021 image/jxl 201 bytes https://jxl-art.surma.technology/?zcode=lZVNSwMxEIbv%2BRX5A4F8f1wEBcXTUvCQc7GrXahY6iL670232SabfXvw1MnMM0M672T2YRh3%2FXHcU0HisEu%2FwTvy3A%2Fv%2B5Hq4Mj94bjfkqfT9qPffH5RTpkiwxt9pXdUEkqTuTn13%2Bmk0olSRl%2F6kXIyW%2BIM%2F%2BZwMn%2BSGbypWF0CfHKnQ5erL6lLKLJzVNyIsu4xRdmcnGvxfKwrMHF11qm88pY%2F0XqWBdeZLbWsUy6B6jDxr0KrpCVSFyjNmq0sTlYyshgXMrBu6rXWoFhurdASulVYXOTqdpgWkJYB0tJiWkNaeEgLi2kOae4hzQ2mFaKDQ3AwkJWQ5Yj1GrEe6uJg6xzsnIOiWKiJVZAViDWwaQb2zEA5NFRDw55p2DMFtVBQCwlHWcJJlniQ8RzjMYZawBm24HULsE7zu2a3d4JYL%2BxcKE5XUis2FpITsFfXe%2FGSzeZt0n4ppkD5Qlzjs6uahOzywbaU57alnJEtZa1sKVNJlF3KlXc1h%2F4A
monad
2021-10-11 11:29:35
welp, I tried
Cool Doggo
2021-10-11 11:31:06
😮 that is still pretty good
2021-10-11 11:35:23
I wonder how long it would take to "brute force" a solution to these types of images
monad
2021-10-11 11:41:08
Too long, especially if you want something small. Clever search is best.
sofia eris bauhaus
2021-10-11 01:07:05
i'm so happy i got this ball rolling. thanks you guys! :) <@!263300458888691714> <@!415302089523331092>
2021-10-11 01:11:26
and those flags are a good cool too. gives me a bit better an idea of of that code works <@!794205442175402004> :)
2021-10-11 01:19:10
if you want more CAs of the sort. rule 105 is cool because it kinda brings out a "character" of it's starting sequence. thue-morse: https://opensofias.github.io/celluloid/#amount:1,page:105,neighbors:3,radix:2,seed:'tm10',zoom:1 dragon curve sequence (aka paperfolding sequence): https://opensofias.github.io/celluloid/#amount:1,page:105,neighbors:3,radix:2,seed:'dc10',zoom:1
2021-10-11 01:22:50
i also made some illustrations about some of those bounded, highly regular but non-periodic sequences, maybe that helps with coding them: https://commons.wikimedia.org/wiki/User:Opensofias#sequences (dragon curve is still missing, i should do that some time)
Cool Doggo
sofia eris bauhaus if you want more CAs of the sort. rule 105 is cool because it kinda brings out a "character" of it's starting sequence. thue-morse: https://opensofias.github.io/celluloid/#amount:1,page:105,neighbors:3,radix:2,seed:'tm10',zoom:1 dragon curve sequence (aka paperfolding sequence): https://opensofias.github.io/celluloid/#amount:1,page:105,neighbors:3,radix:2,seed:'dc10',zoom:1
2021-10-11 03:55:30
That first one is cool 😮
_wb_
2021-10-11 07:22:54
'Fake sky with fake rainbow' 119 bytes
2021-10-11 07:23:01
https://jxl-art.surma.technology/?zcode=7ZRPSwMxEMXv8ynmLpHJ7mYbL0KVak_1T4U9Lya2EZuWNhX10ztJ0y0IPdXDIpLL483LLPsjvMaZMEdJRQVj62bzsNMwXb05bx-2rQ_uqw1u6YfmdbsJC-sDUh4DokQ65fAG6sEGffKGiojJqSgvWNaFymZBBCNvMrBf5Cb_BLdSd9y0VplbNI9wo39uO271gdtg_96ieYzbedmD_5Z9IFcdyKnuxVU_ycHNul3Y--WGr4lC1XC3dtx9qQpxAI_XTyjhygVjV6lAwb3gM16yKXBqY0dmI4mPJAQ2KPYBJWWcfPJEpUxzO86p4ftscjZpsOz0CEWZMpzQRN03eGNqbWtQwTc
Cool Doggo
Cool Doggo ``-d 0 -g 3 -e 9 -P 8 --override_bitdepth=1 --patches=0``
2021-10-11 07:31:08
i will add that i found a small change makes it a bit smaller, and also seems to work better on these types of images generally ``-m -g 3 -e 9 -P 8 -I 1 --override_bitdepth=1 --patches=0 --palette=3`` (not sure if i should put this in encode params but oh well)
_wb_
2021-10-17 08:56:31
Would anyone participate in an October jxl art compo? Two categories? max 64 bytes, unrestricted?
monad
2021-10-17 05:15:58
Sure, man, I'll commit to making some more bad stuff and feign it has any relation to the ancient tradition of art.
_wb_
2021-10-17 05:20:28
64-byte <#824000991891554375> entries go here, before end of October
2021-10-17 05:22:06
Unrestricted <#824000991891554375> entries go here
monad
2021-10-17 05:26:52
> of course a 1 MB jxl is not going to be impressive sounds like a challenge
_wb_
2021-10-17 05:48:52
I mean just drawing something in Gimp and saving it as jxl is not really impressive
JXL Art Bot
2021-10-17 07:33:55
**_wb_** _“The Sunset That Didn't Fit In 64 Bytes”_ 2021 image/jxl 66 bytes https://jxl-art.surma.technology/?zcode=zZE7C8IwGEX3%2FIpvl0DSh3YSqlQ71SdkLia2EZuWNhX115vGqh3cXCQQTj4ON%2BSGSa5zoMTxUCxklusno111lkps2lRpeU%2B1LFXIT22jC6E04KGDAKgTAPllmYyx93OE6%2FxDhEMIBORDPooU76tCizotxLpsrLuqpWnTlgsBYt9%2FYjvfA%2FXRTGouKisgeYQDTMHC1QIGBtTumHbTm5nSSUdsGfdGeMmSUcLAfXME2LXOK8NeKzhgf3jyzWMe
_wb_
2021-10-17 07:53:09
https://twitter.com/sizenewxyz/status/1449698338790645761?t=LDcEE_NHSz86oVvFrKev7g&s=19
2021-10-17 08:01:45
Does anyone know who made that?
2021-10-17 08:03:18
That's afaik the first jxlart that was sold?
190n
2021-10-17 08:03:24
oh, that's an NFT <:monkaMega:809252622900789269><:NotLikeThis:805132742819053610><:tfw:843857104439607327>
Scope
2021-10-17 08:12:21
Deleted User
2021-10-18 07:07:50
sadly there is no link to the codestream of the Jxl, so we don't know if some post-processing after jxl decoding is done or not, so we cannot authenfify real jxl :p
_wb_
2021-10-18 08:31:03
2021-10-18 08:31:54
<@456226577798135808> I put your winning piece on the title slide for the jxl AhG report 🙂
Deleted User
2021-10-18 09:00:35
I'm very proud !
monad
2021-10-19 01:01:34
Very nice.
_wb_
190n oh, that's an NFT <:monkaMega:809252622900789269><:NotLikeThis:805132742819053610><:tfw:843857104439607327>
2021-10-19 09:26:55
Deleted User
2021-10-21 06:59:54
yes but since the beginning, some NFT can give you some power in games, can interact which each others (NFT of a cryptokitty can do babies with another cryptokitty), can give you access to a concert (like a ticket), etc. 🙂
190n
2021-10-21 07:23:07
why do you need nfts do do those things
w
2021-10-21 11:52:41
i think it would be really funny if zou ended up on a slide
Deleted User
190n why do you need nfts do do those things
2021-10-21 06:55:28
because then the ownership of the NFT is secure by the blockchain (e.g. ethereum) and not by a central entity like a game company, a bank, etc. I know that for small applications like games and concert it is not really needed...
Crixis
2021-10-23 10:52:54
For what is needed, the world is based on the respect of the private proprierty, no one can private you off something you have buy without face legal consequence... at the same time without a similiar legal autority someone can say that your nft is not valid... nft not fix anything
_wb_
2021-10-24 02:56:09
I hand-decoded a jxl art file
2021-10-24 02:56:36
``` RCT 15 if PrevAbsErr > 0 - AvgAll -4 if y > 0 if |W| > 0 - N 0 if N > 0 - Set 0 - Set 255 - Set 0 ```
2021-10-24 02:56:37
this one
2021-10-24 02:56:58
These are the compressed bytes: ``` ff 0a fa 1f 01 91 08 06 01 00 50 00 4b 38 41 e6 4d 75 fc 86 b5 93 2a 20 d0 01 de 1f 49 c2 01 5c ```
2021-10-24 02:57:14
Here is an annotated hand decode
2021-10-24 02:57:38
``` FF 11111111 | Signature 0A 00001010 | // Size header FA 0 not small 01 read height as u(13)+1 11111 1F 00011111 u(13) is 1023, so height is 1024 01 001 ratio is 1, so width = height // Image header 0 image header is not all_default 0 no extra fields 0 bitdepth: integer 00 8-bit samples 91 1 16-bit buffers are OK 00 no extra channels 0 not XYB 1 color encoding is all_default (sRGB) 00 no extensions 1 default transforms // Frame header 08 0 frame header is not all_default 00 frame is kRegularFrame 1 encoding is kModular 00 flags are default 0 not YCbCr 0 06 0 upsampling factor 1 11 group size shift 3, so groups are 1024x1024 00 one pass (not progressive) 0 not cropped 00 kReplace blend mode 01 1 is last frame 00 no name (name length zero) 0 restoration filter is not all_default 0 no Gabor-like transform 00 zero EPF iterations 0 00 0 no restoration filter extensions 00 no frame header extensions 00000 padding ```
2021-10-24 02:57:57
``` // TOC 50 00 read first and only group size as u(10) 010100 00 0000 first group is 20 bytes long 0000 padding // LfGlobal 4b 1 default LF dequant 1 decode global MA tree 0 lz77 disabled 1 simple clustering 00 zero bits per entry (all contexts in single cluster) 1 use prefix code (log alpha size 15) // hybriduintconfig 0 38 000 split_exp is 0, msb is 0, lsb is 0 1 computing symbol count 0011 n is 3 41 001 symbol count is 1 + 8 + 1 = 10 00 no skipping // code length code lengths 010 E6 0 code 2={2,3}, eating 2 bits, value of clcl[1] is 3, space -= 4 (28) 11 code 12={2,0}, eating 2 bits, value of clcl[2] is 0 00 code 3={3,2}, eating 3 bits, value of clcl[3] is 2, space -= 8 (20) 111 code 14={2,3}, eating 2 bits, value of clcl[4] is 3, space -= 4 (16) 4D 01 code 7={4,1}, eating 4 bits, value of clcl[0] is 1, space -= 16 (0), done // code lengths 10011 code 19 = {3,1}, eating 3 bits, cl[0] = 1 0 75 01 code 10 = {1,0}, eating 1 bit, cl[1] = 0 1 code 21 = {2,3}, eating 2 bits, cl[2] = 3 10 code 21 = {2,3}, eating 2 bits, cl[3] = 3 11 code 29 = {2,3}, eating 2 bis, cl[4] = 3 0 FC 0 code 7 = {3,4}, eating 3 bits, cl[5] = 4 110 code 24 = {1,0}, eating 1 bit, cl[6] = 0 1 code 28 = {1,0}, eating 1 bit, cl[7] = 0 1 code 30 = {1,0}, eating 1 bit, cl[8] = 0 1 code 31 = {3,4}, eating 3 bits, cl[9] = 4 ```
2021-10-24 02:58:14
``` // start of MA tree decoding 111 86 0 token is (prefix coded) 5, so property is 0b10000 + u(4) 0011 property is 19-1 = 18 = PrevAbsErr 0 token is 0, so splitval is 0, so first node is "if PrevAbsErr > 0" 0 token is 0, so property is 0-1 so leaf node 1 B5 01 token is 4, result is 0b1000 + u(3) 101 predictor is 13 (AvgAll) 101 token is 3, result is 0b100 + u(2) 93 11 uoffset is 7, signed offset is -4 0 mul_log is 0 0 multiplier is 1; leaf node is "AvgAll - 4" 001 token is 2, property is 0b10 + u(1) 1 property is 3-1 = 2 = y 2A 0 token is 0, so splitval is 0, so node is "if y > 0" 101 token is 3, so property is 0b100 + u(2) 10 property is 6-1 = 5 = |W| 0 splitval is 0, so node is "if |W| > 0" 0 property is 0-1 so leaf node 20 0 predictor 0 (Set) 0 offset 0 00 multiplier 1, so leaf node is "Set 0" 0 property is 0-1 so leaf node 001 token is 2 so predictor is 0b10 + u(1) D0 0 predictor is 2 (N) 000 offset 0, multiplier 1, so leaf node is "N 0" 101 token 3, so property is 0b100 + u(2) 1 01 1 property is 7-1 = 6 = N 0 splitval 0, so node is "if N > 0" 0 property is 0-1 so leaf node 0 predictor is 0 (Set) 000 offset 0, multiplier 1, so leaf node is "Set 0" 0 leaf node DE 0 predictor is 0 (Set) 1111 token is 9 so uoffset is 0b100000000 + u(8) 110 1F 11111 uoffset is 510, so offset is 255 00 multiplier 1, so leaf node is "Set 255" ```
2021-10-24 02:58:27
``` // MA tree decoded, start of modular image decoding 0 lz77 disabled 49 1 simple clustering 00 zero bits per entry (all contexts in single cluster) 1 use prefix code (log alpha size 15) 0100 split_exp is 4 C2 010 msb_in_token is 2 00 lsb_in_token is 0 0 symbol count is 1 // Modular header 1 use global tree 1 default WP params 01 01 nb_transforms is 1 00 transform is RCT 00 begin_c is u(3) 00 5C 0 begin_c is 0 10 rct_type is 2 + u(4) 1011 rct_type is 13 (same as RCT 15 in jxl_from_tree) // Modular channel data: read 0 bits for every sample 0 padding ```
2021-10-24 02:58:55
spent about 4 hours on that, haha
2021-10-24 04:01:11
Pretty cool to what extent it is really a bitstream and not a bytestream. So many things are encoded with 0, 1 or 2 bits...
2021-10-24 04:09:51
32 bytes are 256 bits, so I guess this could become a 16x16 matrix of bits. Will be challenging to turn it into a nice infographic...
2021-10-24 04:16:35
So some lessons for jxl art: probably would be good to enable gaborish, so a default restoration filter is used, and I think that should reduce the frame header by 1 byte (since there are 5 padding bits already)
2021-10-24 04:17:17
Choosing the 0.0.0 hybriduint config for the modular data would also save 4 bits (though it wouldn't save a byte here)
2021-10-24 04:19:35
It's a pity that the TOC has u(10) as smallest option, I wish it was u(6) so jxl art with a payload up to 64 bytes would be one byte smaller, haha. But nothing to be done about that now...
Fraetor
_wb_ 32 bytes are 256 bits, so I guess this could become a 16x16 matrix of bits. Will be challenging to turn it into a nice infographic...
2021-10-24 04:49:26
It may be difficult to produce an info*graphic*, but how about something a bit more dynamic, such as a webpage where you can hover over the bits and it shows what they are parsed as? It wouldn't be as slideshow able, but should stil be a pretty good way of helping people understand the bitstream.
2021-10-24 04:51:26
Could stick it on jxl.info
2021-10-24 04:51:44
If I have time over the next few days I might have a go at doing that.
yurume
Fraetor It may be difficult to produce an info*graphic*, but how about something a bit more dynamic, such as a webpage where you can hover over the bits and it shows what they are parsed as? It wouldn't be as slideshow able, but should stil be a pretty good way of helping people understand the bitstream.
2021-10-25 01:26:50
I actually want to see this for pretty much every format 😉
_wb_
2021-10-25 03:34:36
first attempt at turning the above into an infographic
2021-10-25 07:40:42
Fox Wizard
2021-10-25 07:41:03
🤏
_wb_
2021-10-25 07:41:05
I think this is the (or rather a) smallest possible jxl file
2021-10-25 07:59:20
ah no
2021-10-25 07:59:28
Fox Wizard
2021-10-25 08:04:50
Tiny boi
2021-10-25 08:04:54
Gotta save that 1 byte
_wb_
2021-10-25 08:15:54
``` 11111111 00001010 Signature: 0xFF0A 11111111 00000111 Dimensions are 512x256, default image header, default transforms, 5 padding bits 00001000 10000011 frame header: kRegularFrame, kModular, group size 1024x1024, last frame 00000100 no name, default restoration filters, no extensions, 2 padding bits 00001100 00000000 TOC: payload size is is 3 bytes, 4 padding bits 01001011 00100000 Use prefix coding, no lz77, alphabet size is 1 (all zeroes), global tree is "- Set 0" 00011000 Use global tree, default WP params, no modular transforms, 1 padding bit ```
2021-10-25 08:16:31
OK now I'm pretty sure this is as small as it gets
veluca
2021-10-25 08:18:56
how did you save that byte?
_wb_
2021-10-25 08:19:06
I forgot to set epf to 2
veluca
2021-10-25 08:19:29
I see
2021-10-25 08:19:34
what's with the size btw? 😛
_wb_
2021-10-25 08:19:48
epf 2 and gaborish on gives a minimal frame header
2021-10-25 08:19:53
that's the largest small size 🙂
veluca
2021-10-25 08:20:35
isn't 512x512 also a small size?
2021-10-25 08:21:51
I assume that trying to make frame_header AllDefault() results in VarDCT losing more bytes than what you gain with the 3 less bytes of header
_wb_
2021-10-25 08:22:32
I haven't tried but I assume that, yes
2021-10-25 08:22:41
no, the max small size is 256
2021-10-25 08:22:45
for height
veluca
2021-10-25 08:22:48
ahhh I see
_wb_
2021-10-25 08:22:58
but then you can make width = 2 * height with ratio
veluca
2021-10-25 08:23:36
and I assume non-small sizes make you lose more than 5 bits
_wb_
2021-10-25 08:23:41
a non-small size is at least 6 bits more
2021-10-25 08:23:49
U32(u(9), ...
2021-10-25 08:23:55
instead of u(5)
veluca
2021-10-25 08:24:10
right
_wb_
2021-10-25 08:24:27
so I think that's the largest smallest jxl you can make 🙂
veluca
2021-10-25 08:24:41
now the next question: what's the smallest that is not a solid color?
_wb_
2021-10-25 08:25:05
or the smallest non-black one for that matter
2021-10-25 08:25:36
by some miracle, all zeroes happens to decode to the tree `- Set 0`
2021-10-25 08:26:32
if you want a different tree, then you need a non-all-zeroes but then you need to spend bytes on huffman coded huffman codes
veluca
2021-10-25 08:28:31
makes sense
embed
2021-10-26 12:29:22
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902285255422124052/realsmallest.jxl
_wb_
2021-10-26 12:30:17
embed
2021-10-26 12:30:21
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902534603179442197/sunset65.jxl
_wb_
2021-10-26 12:30:46
it works!
veluca now the next question: what's the smallest that is not a solid color?
2021-10-26 12:38:11
embed
2021-10-26 12:38:16
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902536591405375568/small-nontrivial.jxl
veluca
_wb_
2021-10-26 12:41:27
how did you make it?
2021-10-26 12:41:42
just a small nontrivial tree?
_wb_
2021-10-26 12:42:08
``` Width 512 Height 256 XYB - N 1 ```
2021-10-26 12:42:23
but with a hacked jxl_from_tree that uses default XYB dequant
2021-10-26 12:42:53
otherwise the XYB dequant factors (which are non-default in modular) take too much space
2021-10-26 12:43:55
2021-10-26 12:44:09
forgot to add the `EPF 2` and `Gaborish`
embed
2021-10-26 12:44:14
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902538031960035359/smaller-nontrivial.jxl
_wb_
2021-10-26 12:44:59
so that's 3 bytes more than the smallest jxl file, not too bad
2021-10-26 12:45:30
still 1 byte less than what I _thought_ was the smallest possible jxl file until yesterday 🙂
2021-10-26 12:51:36
found a better one
2021-10-26 12:51:39
``` Width 512 Height 256 XYB EPF 2 Gaborish - W -1 ```
2021-10-26 12:51:49
embed
2021-10-26 12:51:55
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902540022786441246/smallest-nontrivial.jxl
_wb_
2021-10-26 12:52:52
`W` is predictor number 1 and -1 is UnpackSigned(1), so this way it only uses symbols 0 and 1 for the MA tree
veluca
2021-10-26 12:53:06
ah yeah that'd help
_wb_
2021-10-26 12:53:15
(`N` and `1` are both 2, so that leaves a gap of unused symbol 1)
2021-10-26 12:54:23
so maybe a 16-byte jxl art competition could actually be somewhat interesting 🙂
**jjido (with help from _wb_ to shave last byte)** _“Minimal Sierpinski”_ 2021 image/jxl 24 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOTKTFOoVLBTMOBSUAAya8JroBwFBV0FPygLKOEHFwZJBKeWoPEMueDiAA%3D%3D
2021-10-26 01:29:21
I don't quite understand why it looks like this
embed
2021-10-26 01:29:28
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902549466119278662/antique_sierpinski.jxl
_wb_
2021-10-26 01:30:18
``` Width 256 Height 256 EPF 2 Gaborish Bitdepth 2 if y > 0 if |W| > 0 - N 0 if |N| > 0 - Set 0 - Set 1 - Set 0 ```
fab
2021-10-26 01:37:51
It works even on bluecord
_wb_
2021-10-26 01:42:39
oh, looks like jxl_from_tree is not initializing its cparams properly
2021-10-26 01:42:51
that explains why it is doing an RCT without me asking for it
2021-10-26 01:43:01
embed
2021-10-26 01:43:06
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902552907726069810/small-sierpinski.jxl
_wb_
2021-10-26 01:43:20
ah the embed bot has the upsample bug
2021-10-26 01:43:51
<@!288069412857315328> what version of the decoder is it using? you might want to update it
w
2021-10-26 01:48:07
how recent is the fix? app's on libjxl from 19 days ago
Eugene Vert
2021-10-26 02:03:04
https://github.com/libjxl/libjxl/issues/459 ?
_wb_
2021-10-26 02:11:54
ah, maybe it isn't fixed yet 🙂
2021-10-26 02:12:46
that is, the bug happens depending on what decode api you use (decode to float vs uint8 buffer)
w
2021-10-26 02:13:07
is it that simple to fix in libjxl?
_wb_
2021-10-26 02:14:27
I don't know if it's a simple or hard fix, or if that's even the issue to begin with (the bug being on one of the special decode paths)
2021-10-26 02:14:58
<@!179701849576833024> or <@!604964375924834314> probably know better how tricky this is
veluca
2021-10-26 02:17:55
I thought we had that fixed...
2021-10-26 02:18:08
It ought to be just a few variable name changes
_wb_
2021-10-26 03:17:17
pdf version of the manually decoded bitstream explainer
2021-10-27 07:35:33
2021-10-27 07:35:50
64 megapixels of JXL art in 16 bytes
2021-10-27 07:36:28
preview is downscaled 50% because otherwise it's too big for discord
2021-10-27 07:36:54
do zoom in on it
2021-10-27 07:37:12
funky purple blobs on a yellow background
Fox Wizard
2021-10-27 07:37:49
Rip when trying to decode in Chrome <:Cheems:884736660707901470>
_wb_
2021-10-27 07:38:41
data:image/jxl;base64,/wr6/xnIgwQYAEsIpRGcAA==
2021-10-27 07:38:50
Chrome still has the upsampling bug I think
Fox Wizard
2021-10-27 07:39:28
Yeah, seems like it <:Cheems:884736660707901470>
fab
2021-10-27 07:53:50
firefox also
2021-10-27 07:54:16
_wb_
2021-10-27 08:43:34
2021-10-27 08:44:03
embed fails?
Fox Wizard
2021-10-27 08:53:38
Imagine a world where Discord would support jxl, avif and AV1 <:KekDog:884736660376535040>
_wb_
2021-10-27 08:54:50
I meant <@288069412857315328> 's <@&902534238069489715> bot
Fox Wizard
2021-10-27 09:08:12
I know. Would just be nice if Discord would add all those things
Cool Doggo
2021-10-27 09:57:45
~~probably because of file size limit~~ nvm
Traneptora
2021-10-27 11:14:23
How can I make extremly tiny JXL art at a specific size
2021-10-27 11:15:32
specific dimensions, I mean
monad
2021-10-28 12:27:39
<@!853026420792360980> If you're using jxl_from_tree, sounds like you want `Width` and `Height` https://jxl-art.surma.technology/wtf.html
embed
2021-10-28 12:31:12
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/903021129655013456/20bytes.jxl
w
2021-10-28 12:31:31
i didnt do anything
monad
monad <@!853026420792360980> If you're using jxl_from_tree, sounds like you want `Width` and `Height` https://jxl-art.surma.technology/wtf.html
2021-10-28 12:33:44
If you mean hacking the bitstream, I guess read through the stuff Jon has posted recently. https://discord.com/channels/794206087879852103/794206170445119489/900463961772793856 https://discord.com/channels/794206087879852103/824000991891554375/901846908102930452 https://discord.com/channels/794206087879852103/824000991891554375/902576630692741130
Traneptora
monad <@!853026420792360980> If you're using jxl_from_tree, sounds like you want `Width` and `Height` https://jxl-art.surma.technology/wtf.html
2021-10-28 01:51:56
works, but how do I make it redo something random
Fox Wizard I know. Would just be nice if Discord would add all those things
2021-10-28 02:00:52
discord is electron, which is based on chromium
2021-10-28 02:01:01
so as long as chromium gets it, it probably will eventually
w
2021-10-28 02:04:30
except discord doesnt want to
2021-10-28 02:05:17
like embedding .opus extension and av1 video
Traneptora
2021-10-28 02:11:08
yea it's so dumb that discord will embed opus but only if named `.ogg`
_wb_
Traneptora works, but how do I make it redo something random
2021-10-28 05:07:29
Random?
JXL Art Bot
2021-10-28 06:06:31
**Anonymous** _“Unnamed piecelyndon kirk”_ 2021 image/jxl 32 bytes https://jxl-art.surma.technology/?zcode=y0xTSFawUzDgykxT8AMyTEGMcDBDV8GxLN0xJ0dBV8EQyAlX0FYwMjAAsvzgrODUEgUDAA%3D%3D
Traneptora
2021-10-28 11:15:54
I thought there was a randon input
2021-10-28 11:16:02
guess not
monad
2021-10-28 05:50:40
*every time you open the image, it's different*
haaaaah
_wb_ ah no
2021-10-29 01:54:58
Time to update slide 80? https://docs.google.com/presentation/d/1LlmUR0Uoh4dgT3DjanLjhlXrk_5W2nJBDqDAMbhe8v8/edit#slide=id.gde87dfbe27_0_43
_wb_
2021-10-29 05:06:39
Ah, yes maybe. A 1x1 image is a bit larger than a 8x8 image (need an extra byte for the SizeHeader)
Scope
2021-10-29 05:12:28
Then it might be a good idea to add another column with the smallest possible file size for each format (not just for 1-pixel images)
_wb_
haaaaah Time to update slide 80? https://docs.google.com/presentation/d/1LlmUR0Uoh4dgT3DjanLjhlXrk_5W2nJBDqDAMbhe8v8/edit#slide=id.gde87dfbe27_0_43
2021-10-29 09:35:07
Updated it a bit.
2021-10-29 09:35:29
Does anyone have smallest possible sizes for avif, webp or heic?
Scope
2021-10-29 09:51:15
Maybe this will be somewhat useful for AVIF https://chromium.googlesource.com/codecs/libwebp2/+/refs/heads/main/doc/container/
monad
_wb_ Does anyone have smallest possible sizes for avif, webp or heic?
2021-10-29 10:06:30
One reference: <https://github.com/mathiasbynens/small/commit/1cd7c58a1b3c357e73ff7be26accd362bc093354> <https://github.com/mathiasbynens/small/issues/115>
Scope
2021-10-29 10:10:53
<https://github.com/mathiasbynens/small/blob/master/heif.heif>
monad
2021-10-29 10:11:28
I didn't know if that was heic.
Scope
2021-10-29 10:13:04
Yes, this is HEIC (HEIF-HEVC)
2021-10-29 10:16:58
Also <https://github.com/mathiasbynens/small/issues/114>
_wb_
2021-10-29 11:27:39
thanks, updated the slide
2021-10-29 11:30:13
the 14 byte GIF is a bit dubious imo
2021-10-29 11:30:22
it works in chrome
2021-10-29 11:30:48
2021-10-29 11:31:11
2021-10-29 11:32:02
firefox:
2021-10-29 11:32:27
2021-10-29 11:32:51
so either all of these don't properly implement the GIF spec, or it's not actually a valid GIF
Scope
2021-10-29 11:33:49
🤔 <https://stackoverflow.com/questions/2570633/smallest-filesize-for-transparent-single-pixel-image/15960901#15960901>
_wb_
2021-10-29 11:38:42
ok, I'm going to interpret "valid" as "follows the spec and has a somewhat predictable decoded image"
2021-10-29 11:39:21
otherwise it's a matter of what kind of invalid files are supported by what and that is a different game
2021-10-29 11:40:14
(I can make a decoder that renders any invalid file as a 1 pixel transparent image and then you could argue zero bytes are enough)
Scope
2021-10-29 11:40:26
Yep, because PNGs can also be: <https://github.com/mathiasbynens/small/blob/master/png-truncated.png>
nathanielcwm
2021-10-29 11:58:05
<@!794205442175402004> funnily enuf the stackoverflow article said that chrome was fixed to not allow the 14 byte gif to render anymore
2021-10-29 11:58:51
37 bytes is apparently the minimum that's required to follow the gif standard properly
2021-10-29 11:59:11
but 33 is what's required to display in all the current major browsers supposedly
Petr
Scope Yep, because PNGs can also be: <https://github.com/mathiasbynens/small/blob/master/png-truncated.png>
2021-10-29 12:49:57
That repo also contains https://github.com/mathiasbynens/small/blob/master/jxl.jxl which is 16 B and could be updated by the proud inventor of a smaller file, <@!794205442175402004> 🙂
Scope
2021-10-29 12:50:40
Yep <https://github.com/mathiasbynens/small/pull/125>
fab
2021-10-29 01:09:55
could anyone represent my discord profile picture in jxl art?
2021-10-29 01:10:18
monad made something similar even more complex
monad
2021-10-29 06:33:44
I don't know what I've made that's similar. Giving a sense of the image is straightforward enough with splines, but making something small would be a challenge with representing the distinct red areas.
_wb_
2021-10-29 06:38:11
Reminder: there's a <#899346138266746890> and an <#899346548796841994>
2021-10-29 08:31:39
some of my entries are substantially smaller than the 64-byte limit
2021-10-30 11:34:17
Submissions have to be made this weekend - don't be shy!
haaaaah
_wb_ Reminder: there's a <#899346138266746890> and an <#899346548796841994>
2021-10-30 08:59:00
Looks like > 64byte oct compo and an #deleted-channel To me
_wb_
2021-10-30 08:59:52
yeah threads auto-archive, they're still there but you have to click on Threads
2021-10-30 08:59:56
unarchived it
monad
2021-10-31 08:06:54
So, apparently djxl doesn't decode splines with 734149 coordinates.
_wb_
2021-10-31 08:14:33
It may depend on the image dimensions
monad
2021-10-31 08:15:12
ah
2021-10-31 08:16:29
524288 coords at 1024x1024 seems kinda limited
2021-10-31 08:31:03
seems number of coords is limited to half the pixels
2021-10-31 08:32:51
*when decoding a 451kB image consumes all memory*
_wb_
2021-10-31 09:21:39
we needed to put in _some_ limit to avoid security issues
Fraetor
2021-10-31 11:56:45
I guess else it could be used for denial of service.
_wb_
2021-11-01 07:53:59
Only one participant per category
2021-11-01 07:54:13
That's not really a contest then, is it?
2021-11-01 07:54:54
Shall we combine the October and November compos and just leave it open for another month?
monad
2021-11-02 12:17:38
Reality is, the audience here isn't interested enough. If you want to keep trying though, keeping it open for November is a fair idea.
Nova Aurora
2021-11-02 04:37:50
I just haven't created anything I consider good enough
monad
2021-11-02 04:52:08
Same, I just try to support the initiative.
_wb_
2021-11-02 07:23:56
'good enough' is up to the audience to judge, not the artist, imo
2021-11-02 07:25:18
Worst thing that can happen is you put something in a discord thread and it doesn't get any <:BlobYay:806132268186861619> emojis
monad
2021-11-02 07:34:52
Jon probably thinks an 8x8 white square is the most interesting JXL art. So, there's that.
2021-11-02 07:35:38
And, hey, I have a new role. Unexpected, but I guess I'll take it ...
_wb_
2021-11-02 07:37:49
A 8x8 white square in 14 bytes would be interesting. In 20 bytes it's not interesting. I have a strange taste, I guess 😅
nathanielcwm
2021-11-02 10:27:19
<:monkaMega:809252622900789269>
monad Reality is, the audience here isn't interested enough. If you want to keep trying though, keeping it open for November is a fair idea.
2021-11-02 10:29:33
maybe extending one of the contests out to a longer time frame like 3 months would reduce this issue or maybe make it every two months or smth instead of monthly
w
2021-11-02 10:29:45
i would but school happened
monad
2021-11-02 07:21:46
I just don't think the time frame is the limiting factor. It's a niche thing in a budding format. If 1% of people with exposure to JXL wanted to make art in this format, that would be very good. But even among the geeks in this server, we didn't see participation reach that proportion in the last two events. I think the event needs to reach a lot more people and a public venue is a good start.
_wb_
2021-11-06 08:59:28
Tried to reach some more people on twitter and reddit
haaaaah
2021-11-06 08:02:54
I wonder which is better for cinematography. Jxl or avif? Mostly would consist those with just a small part moving I think. Or with multiple layers and a few semi transparent pixels in the foreground moving
_wb_
2021-11-06 08:07:59
If things can be done with cropped frames, jxl might be ok. If motion vectors are needed, avif will be better.
2021-11-06 08:08:32
But the jxl encoder currently doesn't even try to be smart about animation
haaaaah
2021-11-06 08:14:48
So it depends. Ok. Should also check if actual video is better than avif.
_wb_
2021-11-06 08:19:41
Avif is actual video
2021-11-06 08:20:06
There is no difference between av1 in avif or in any other container
JXL Art Bot
2021-11-07 09:21:02
**\_wb\_** _“Structure out of the blue”_ 2021 image/jxl 34 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOEKcg5RMDTkcitKzE0NyC9W0DUyNVPQNTU04uLKTFMId%2FdQsFPQteBSUNBVcCxLD9f2C1cwhPH8tP1cFXQNuQA%3D
2021-11-07 09:56:25
**\_wb\_** _“Steampunk Game Texture Collection”_ 2021 image/jxl 28 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOYKLixNTa1K5QotKE7MLchJVTDi4spMU0hWsFMw5FJQADLD3T2AHAMgR0FBV8GxLN1P288VLInM1wUJ6CoEp5YATQAA
_wb_
2021-11-07 10:13:56
Just to clarify: any jxl art I make can be considered open source with a permissive license: feel free to 'fork' any jxl art 'source code' and make a derived jxl-art from it (for the compo or just for fun). If you scroll up, you'll find lots of starting points in this channel...
embed
2021-11-13 11:57:56
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/902552907726069810/small-sierpinski.jxl
w
2021-11-13 11:58:38
right... forgot about discord's caching
perk
2021-11-25 11:12:42
Bitdepth 8 RCT 0 if WGH > 1 - AvgAll 2 if Prev > 2 - AvgN+NE -2 if N > 2 - Set 0 - Set 255
embed
2021-11-25 11:12:47
2021-11-25 11:12:54
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/913386735856132136/message.jxl
_wb_
2021-11-25 01:00:14
funky, I didn't know we had a `jxl_from_tree` bot
Pieter
2021-12-02 05:04:58
Oh, nice.
nwoeanhinnogaehr
2021-12-18 06:37:27
Is there somewhere I can read about how `Weighted` works? I'm trying to convert some jxl art into a standalone executable without any dependencies and am struggling to understand exactly what it does
_wb_
2021-12-18 07:02:53
It's complicated
2021-12-18 07:05:56
It's a self-correcting predictor, in two ways: it has 4 subpredictors and it uses a weighted sum of those based on their recent performance (those with less error get a larger weight), and the error from previous predictions also feeds back into the subpredictors themselves
nwoeanhinnogaehr
2021-12-18 07:51:49
I think I understand generally how that is working now, but how do the 5 `PredictorMode`s come into play? This will all be in the spec when it's released in january, right?
_wb_
2021-12-18 09:27:27
You can also try to read the code :)
2021-12-18 09:28:34
The 4 subpredictors have parameters, in the current jxlart tool (jxl_from_tree) you'll just get the default WP params
2021-12-18 09:29:03
But you can adjust some constants in how the subpredictors are defined
2021-12-18 09:30:13
At slow encode settings, a few different parameters are tried, I think that's the predictormodes you are talking about
2021-12-18 09:31:02
But that's just an encoder implementation thing, in reality there are no modes, just about a dozen parameters that can be signaled
nwoeanhinnogaehr
2021-12-19 12:13:25
That's helpful, thanks 🙂 I will look more at the code
JXL Art Bot
2021-12-20 05:23:27
**nwoeanhinnogaehr** _“Staircased”_ 2021 image/jxl 63 bytes https://jxl-art.surma.technology/?zcode=nZBBC4JAEIXv8yveH1jY1VnxFFhEnTxU4Dl004VFIpZ%2Bf5jWmhlCtzcf8%2BbNzNr6ylx9A8VU2KoTMmLaG1s3vteHzQmRJLIXFFhBEjBIlcQpk8DR%2BBfOh46%2BEPn2XfcukRcj8mTlBwC6ec6UHqxnKVNgu9u5sqb1iP%2FMEPMhgpNRSnavM%2Bcg0h%2BHhQ41JWr5LSFU6aldL3n4ewVNDw%3D%3D
2021-12-24 04:10:09
**Anonymous** _“Colorful checker board”_ 2021 image/jxl 28 bytes https://jxl-art.surma.technology/?zcode=80jNTM8oUTA1NOIKz0wpyQCzuDLTFPwU7BQsuBQUgMxkINMQyFRQ0FUIB6tPTVHQNYKKBKeWKBhwwVhGpqZcAA%3D%3D
2021-12-27 08:59:46
**\_wb\_** _“Gooey chessboard”_ 2021 image/jxl 30 bytes https://jxl-art.surma.technology/?zcode=80jNTM8oUTA0suAKz0wpyQCzQguKE3MLclIVLLiCC0tTU6tSuZwyS1JSC4DyZlxcmWkK4Qp2CsYGXAoKugp%2BCromQAZQ0A8mCBIOVzCEs0y4AA%3D%3D
2021-12-27 09:08:31
**\_wb\_** _“Plasma gun spritesheet”_ 2021 image/jxl 29 bytes https://jxl-art.surma.technology/?zcode=80jNTM8oUTAyNeMKz0wpyQCzQguKE3MLclIVLLiCC0tTU6tSuZwyS1JSC4DyJlxcmWkKyQp2QBaQEQ5iGHApKOgqBKeWKOhC2eEKhlwQEQMuAA%3D%3D
2021-12-27 09:11:43
**\_wb\_** _“FFFFFFFFFFFFFFFFF...”_ 2021 image/jxl 27 bytes https://jxl-art.surma.technology/?zcode=80jNTM8oUTAyNeMKz0wpyQCzQguKE3MLclIVLLiCC0tTU6tSuZwyS1JSC0DyXFyZaQrJCnYKJiCGH5BhzKWgoKsQrqALYxhy6SoEp5YoGHABAA%3D%3D
2021-12-27 09:28:52
**\_wb\_** _“RGBTQ+”_ 2021 image/jxl 30 bytes https://jxl-art.surma.technology/?zcode=80jNTM8oUTA0suAKz0wpyQCzQguKE3MLclIVLLi4nDJLUlILgBKmXFyZaQoBRalljknFrkVFCnZAaV2FcAVDkLgfkGtsyqWgABLRNYSywIanpgCVcAEA
2021-12-28 09:01:43
**\_wb\_** _“Yet Another Sierpinski”_ 2021 image/jxl 45 bytes https://jxl-art.surma.technology/?zcode=ZU%2FLCsIwELzvV%2BxdArYY6UlQETyV4oOc1UYbqFDaIPr3TtJEW80hmccys9lqc6ssp3JOypS28ujYdKd7U2vOiFbGlrqBkdFufeCEyFz5wgsggKJo9WN57jZtC2lKgvfa4oWVQxDSScp36JJFMqJZjPLzzxCgkOxugSqnv8YDzIAqQGaBnh6Fyp44o99kyFIp6evE17cokbtQlPog0MBibipn9BP7WS52KJ5wEthg4X9zkIIPOAfYibW%2BWD%2BH8wY%3D
2021-12-30 05:21:59
**\_wb\_** _“Minimalist XOR pattern”_ 2021 image/jxl 25 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTg4spMUwjX9QtXsFPQNeRSUABy%2FYB8GFdBQVchXAHGAioz4AIxglNzUpNLgOIA
2021-12-30 06:00:08
**\_wb\_** _“Interesting Moiré (zoom in and out on me)”_ 2021 image/jxl 30 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQsODi4gouLE1NrUrlykxTSFawUzAxALHCdf3CgRxdQy4FBSDXD8iHcRUUdBXCFWAsoDIDLhAjODUnNbkEKA5iligYAAA%3D
2021-12-30 06:17:21
**\_wb\_** _“Psychedelic hippie clothes”_ 2021 image/jxl 32 bytes https://jxl-art.surma.technology/?zcode=NcqxCoNAEIThfp5iXuDAIyJWFrFJZaGRq0U3emDggmuTp3evsPv%2BYZ5RF0m68YExHdM37cIaIS42VSVeEtdNszD8TpG%2FoG%2Ff9ED8cGZDX2UF1wUL50FadtZ3ko6Bt%2BxWIGOQXWa1PVNZXA%3D%3D
2021-12-30 09:01:33
**\_wb\_** _“Endoplasmic Reticulum”_ 2021 image/jxl 37 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCi0oTswtyElVMOEKz0wBipkaGnF5pGamZ5SAmUHOIQqGXFyZaQrJCnZAlgIQADmVQI4BmKOgoKvgp6BriMQBsYFqwuFqQBx3DxQt4WArUlMUdE3gYo5l6X7afq4KuqYQdUiqDA0MDLgA
2021-12-31 02:35:53
**Anonymvs** _“Tit LE”_ 2021 image/jxl 37 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCi0oTswtyElVMOEKz0wBipkaGnF5pGamZ5SAmUHOIQqGXFyZaQrJCnZAloICkFkJZBoAmQoKugp%2BCrqGcCZUPhwuD%2BK4e8C5IFXhYMNTUxR0jeBijmXpftp%2Brgq65qZcaKqMTM24AA%3D%3D
2021-12-31 08:21:40
**\_wb\_** _“Endoplasmic Reticulum 2”_ 2021 image/jxl 41 bytes https://jxl-art.surma.technology/?zcode=PY1NC8IwEETv%2BRVzl0ASFPUiVCn2FMQPctZmbQMVQhr6%2B91G7G3e22H2GLKnmHtoJVzwHDZKiYZC1%2BcSH3F8fuJAWIvr6Q6zFyK80eIALQCOl0RT9RrrlNgZxRKQuFHGVv3JQpYL1x23fnqGc7Pg3HPlL3lIvbhq6uzK1pA7vWwP1GZow%2Ftf
2021-12-31 08:49:13
**\_wb\_** _“Untitled”_ 2021 image/jxl 35 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQsOAKz0wB0qYGBlweqZnpGSVgZmhBcWJuQU6qgglXkHOIgiEXV2aaQriCnYKukakBl4ICiOfuAeQbgCSSwQxdhXCwAakpQFVANQoKyCKGUBHHsnQ%2Fbb9wiICuQnBqTmoyxE4A
_wb_
2021-12-31 09:08:56
2021-12-31 09:09:05
https://jxl-art.surma.technology/?zcode=PcaxDkAwFAXQ_X7F_YEmFbpKmEwWEXPDo00qqajF1yuD6ZzWp0Viciwx-SVrtEYnfnPp6xhPu8cgrDAcl8gtaEJ0FvArZ9Y0IHOnXFXmk4o9VfG3wusgiRoP
2021-12-31 09:11:29
'Acrylic paint splashed on glass'
JXL Art Bot
2021-12-31 09:34:18
**\_wb\_** _“Upsampling Boundary Cases”_ 2021 image/jxl 22 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMOQKz0wB0WZcHqmZ6RklIFZoQXFibkFOqoIFF1dmmkK4gp2CAZeuQnBqiYKuMYxlbMgFAA%3D%3D
Rally
2021-12-31 02:09:06
This should be the right channel, how does the coefficients portion of spline exactly work?
JXL Art Bot
2021-12-31 02:37:01
**Mr.Korrupto** _“Early practice #1”_ 2021 image/jxl 32 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCi0oTswtyElVMOEKz0wBixmZcHmkZqZnlEDYwYWlqalVqVyOOQUZiVxBziEKhlxcmWkKyQp2CqZcCgq6CsGpJQoGQBZQMBwoaARkwoRh7HCwgakpCoZGFlwA
2021-12-31 02:38:37
**Mr.Korrupto** _“Early practice #1.5”_ 2021 image/jxl 29 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCi0oTswtyElVMOEKz0wBixmZcHmkZqZnlEDYQc4hCoZcXJlpCskKdgqmXAoKugrBqSUKBkAWUDAcKGgEZMKEYexwsBGpKQqGRhZcAA%3D%3D
Rally
2021-12-31 02:41:37
just me figuring the system for now, made a challenge for myself to attempt atleast 1 original piece per day
_wb_
Rally This should be the right channel, how does the coefficients portion of spline exactly work?
2021-12-31 03:00:36
The coeffs are 1D DCT32 coeffs for R,G,B (or X,Y,B) and sigma ("thickness" or "blur radius")
_wb_
2021-12-31 03:04:00
See also this
Rally
2021-12-31 03:37:13
Oh so its just 32 numbers right one after another separated by spaces?
_wb_
2021-12-31 05:04:51
Yes, four times
Rally
2021-12-31 05:05:31
alright, thanks!
JXL Art Bot
2022-01-01 09:55:50
**\_wb\_** _“A binary tree shaped like a Sierpinski triangle”_ 2022 image/jxl 45 bytes https://jxl-art.surma.technology/?zcode=C89MKclQMDI14%2FJIzUzPKFEwNLLgcsosSUktAIlzhRYUJ%2BYW5KQqmHA55hRkJHIFOYcoGHNxZaYpVCrYKRhwKSgAmX5QJoSj6%2BcK5yso6CoEp5Yg8fwUtJHUhuv6IalF6NY1hAqBtYTD9WCaiEsPFi2mENdWANUaGpnD3ADhWuBwLkwfQgYA
2022-01-01 10:52:46
**\_wb\_** _“Cellular Disintegration”_ 2022 image/jxl 81 bytes https://jxl-art.surma.technology/?zcode=dZA7DsIwEER7n2IuYClxsBIaChASlQsSyReISdxRuIDbs47l%2BCPSzbxdrXbmat1s3m7FwJ63CR3TdiYnmn5gD2OX1QXN7AsfXNA1DCD9jXpzilwwAMdo3O78UPN8HhhXd2K83eGGF2IiZ4mKgiZ%2Bqrh%2FQGnw%2FoBTxH%2B4PBNY%2FkiZ6jBDvRaJkDJ25ZsT51SPb1W2KV59ojyQz6P6AQ%3D%3D
_wb_
2022-01-01 11:14:13
Added some arty-farty blob of text to this one: https://twitter.com/jonsneyers/status/1477236176142667776?t=-YNZtk0RouVu0vR981L4Cw&s=19
Rally
**\_wb\_** _“Cellular Disintegration”_ 2022 image/jxl 81 bytes https://jxl-art.surma.technology/?zcode=dZA7DsIwEER7n2IuYClxsBIaChASlQsSyReISdxRuIDbs47l%2BCPSzbxdrXbmat1s3m7FwJ63CR3TdiYnmn5gD2OX1QXN7AsfXNA1DCD9jXpzilwwAMdo3O78UPN8HhhXd2K83eGGF2IiZ4mKgiZ%2Bqrh%2FQGnw%2FoBTxH%2B4PBNY%2FkiZ6jBDvRaJkDJ25ZsT51SPb1W2KV59ojyQz6P6AQ%3D%3D
2022-01-01 01:59:40
woah, this one is interesting! if I'm reading the code right, you're essentially having one main algo, and special cases for each group, right?
_wb_
2022-01-01 02:02:13
Yes, the "decay speed" of the right side of the sierpinski triangles differs per group
Rally
2022-01-01 02:09:50
ah, nice there's also something else I'm curious about, what causes the distinct "sky blue" lines on the right side of each traingle?
_wb_
2022-01-01 02:37:19
The choice of RCT. Without the RCT, it would just be grayscale.
Rally
2022-01-01 02:49:47
ah, alright, thanks!
_wb_
2022-01-01 09:43:37
https://jxl-art.surma.technology/?zcode=jZDLCsIwFET3-Yr5gQtJH-jKhVJwlYUPspY22oBCwSz0771JbZrixt3McCYZ7tb5zg6-x1ocdicoYVzHrlaF2Ft3632U5-F5eQx3y5RwV7TYMAmwfLOULAGCBqmvPFqPoq5Hpk0Mm1cygTNQSYcOjaX09GRjoLPqVJh9AAwtmTEl3XBKKovjXMPZT4jyz3az-GfaU0k5DzahWMp8s4lHtR2oylOsmPoA
2022-01-01 09:43:44
2022-01-01 09:44:52
'Alien Beehive'
Rally
2022-01-01 10:45:30
not feeling the top part but bottom is so cool!
_wb_
2022-01-01 11:13:32
The top is just a way to get randomness to initialize the bottom with. It doesn't look as interesting without random initialization...
Rally
2022-01-01 11:16:13
ah, huh I didn't know so top is a setup for the later instructions to be able to read out from?
_wb_
2022-01-01 11:24:18
Things are evaluated top to bottom, and the Weighted stuff behaves weirdly enough to be similar to a pseudorandom number generator
2022-01-01 11:24:29
Could have a smaller top section though
2022-01-01 11:24:39
Like this: https://jxl-art.surma.technology/?zcode=jZA_C8IwFMT3fIr7Ag-a2lAnB6Xg1ME_ZJY22oCFghn02_uSmpg6ud0dv0uOt7WuN5MbsBaH3QlSaNuzU7IUe2NvgwvyPD0u43Q3KIWwV3TYMAmwfLEsWAKEFiQ_8mgcSqVmpksMm2cyntOQSfsOzaX0tIoo-zZrRv7rPaBpycwptQ2nJLM4rNWg-jeD_LPcLL6Jc6oi26t9cVXkk3U4qelBVZ6iZuoN
Rally
_wb_ Things are evaluated top to bottom, and the Weighted stuff behaves weirdly enough to be similar to a pseudorandom number generator
2022-01-01 11:26:54
huh, that's useful to know!
veluca
2022-01-01 11:27:21
in theory with custom origins you could omit that top part, no?
_wb_
2022-01-01 11:27:59
Sure
2022-01-01 11:30:03
https://jxl-art.surma.technology/?zcode=jZDNDoIwEITvfYp5gU1apMGTBw3GEzH-pGcCVZpIJMJB394FpBZP3mYm37STXbuutE1XYSkOmxOUMK5kp1UkdtZdq26Q20de2_29hQRpJc5Nm9fNzTIu3AUFVqwAli-WkiVAyEDqI4-2Q6T1yBSeYfP0pucMlNd9h8aSf1pPKPssaE781_eAoTkzppSlnJIK4mGtASW_GdSf5XT2zTQnlsFe0xcXMpxshgvbEhSHKRKm3g
2022-01-01 11:30:06
Like that
2022-01-01 11:30:49
Looks like the interaction of upsampling and crop doesn't quite work, probably a bug in jxl_from_tree but maybe worth checking out
2022-01-01 11:31:33
https://jxl-art.surma.technology/?zcode=jZC_DoIwGMT3PsW9QJO2QnBy0GCciPFPOhOo0kQikQ769n4FqcXJ7e7yu_byra2rTecaLNlhc4Jk2tbkUqnYzthr4wa5fZSt2d97CHApFDt3fdl2NwPFmL2gwoqaAMkXSUES4CgI_sijcVBpOjJVYMg8g_Gchgzad_hYCk-nE0q-iJoT__Ue0HzOjCkvckq5jOJhrQbPfjPIP8v57JtpTiKivdoXFyKerIcTmxo8iVNkRL0B
2022-01-01 11:31:59
veluca
_wb_ Looks like the interaction of upsampling and crop doesn't quite work, probably a bug in jxl_from_tree but maybe worth checking out
2022-01-01 11:43:34
😭
Scope
2022-01-02 09:01:11
I think because this is not fixed (at least in this online/browser version) https://github.com/libjxl/libjxl/issues/459
_wb_
2022-01-02 09:04:08
<@228116142185512960> could the jxlart libjxl be bumped again? Oh and another thing that would be nice, is to have a button to get a base64 data url for the jxl...
surma
2022-01-02 11:52:59
<@!794205442175402004> I just tried building 0.6.1 and it seems that `libskcms.a` is not being built anymore and I can’t find it anywhere in my build folder. Did something change around skcms?
_wb_
2022-01-02 11:56:33
Yes, iirc we made it so you can plug in skcms or lcms
2022-01-02 11:57:19
<@604964375924834314> do you know what is going on?
novomesk
2022-01-02 11:58:11
set(JPEGXL_BUNDLE_SKCMS true CACHE BOOL "When building with skcms, bundle it into libjxl.a.")
JXL Art Bot
2022-01-02 12:25:04
**\_wb\_** _“The y2k22 bug”_ 2022 image/jxl 34 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbk4spMU6hQsFMw4FJQ0FUIVwADQwMwAAsFp5YoGBkaGhmDBbkA
2022-01-02 12:39:41
**\_wb\_** _“Overflow Nightmares”_ 2022 image/jxl 24 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbicsvJTyxxrShwyiwpVrDg4tJVCE%2FNTM8oSU1RMDQwsTA1N%2BMCAA%3D%3D
2022-01-02 12:41:57
**\_wb\_** _“More Overflow Nightmares”_ 2022 image/jxl 24 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbk4tJVCE%2FNTM8oSU1RMDQwsTA1N%2BMCAA%3D%3D
_wb_
2022-01-02 12:49:25
Note: none of the above jxl files are technically spec compliant bitstreams. Overflow is not supposed to happen when int32_t is used for the sample values (or int16_t if the modular_16bit header flag is set).
JXL Art Bot
2022-01-02 01:16:10
**\_wb\_** _“One million shades of gray”_ 2022 image/jxl 25 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDLg4spMU6hUsFMw4NJV8FMwNDAyATLCFQy5AA%3D%3D
2022-01-02 01:21:18
**\_wb\_** _“Overflow Caterpillar”_ 2022 image/jxl 33 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbkCnIOUTDk4spMUwh391CwUzDg0lUIT81MzyhJTVEwNAADZCEjiAgA
surma
2022-01-02 01:52:42
<@!794205442175402004> So what do I need to change? I’m guessing/hoping there’s a cmake flag that links one of those? https://github.com/surma/jxl-art/blob/main/jxl/Makefile#L46-L56
spider-mario
2022-01-02 01:53:40
`-DJPEGXL_BUNDLE_SKCMS=YES` might do it
surma
2022-01-02 01:58:46
cheers
perk
2022-01-02 02:07:48
Bitdepth 1 RCT 1 if WGH > 0 - Weighted 10000000 - Weighted 400000
embed
2022-01-02 02:07:54
perk
**\_wb\_** _“Overflow Caterpillar”_ 2022 image/jxl 33 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbkCnIOUTDk4spMUwh391CwUzDg0lUIT81MzyhJTVEwNAADZCEjiAgA
2022-01-02 02:08:37
"overflow dither"
embed
2022-01-02 02:08:42
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/927201546670837810/message.jxl
surma
2022-01-02 02:19:26
<@!604964375924834314> Sadly, that didn’t do the trick :S
JXL Art Bot
2022-01-02 03:10:29
**\_wb\_** _“Overflow Noise”_ 2022 image/jxl 32 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbk4uIKLixNTa1K5cpMU0hWsFMw59JVCE%2FNTM8oSU1RMDSAAaBocGqJggFQAwA%3D
2022-01-02 03:22:52
**\_wb\_** _“Overflow AvgAll”_ 2022 image/jxl 24 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDbicsvJTyxxrShwyiwpVrDg4tJVcCxLd8zJUTA1AAMuAA%3D%3D
2022-01-02 06:43:32
**\_wb\_** _“Brachiosaurus by a beginner linocut artist”_ 2022 image/jxl 28 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQsOAKz0wB0kamZlweqZnpGSVgZmhBcWJuQU6qggkXV2aaQriCHVDYlEtBQVchHKwqNUVBF6QQRcTQwJgLAA%3D%3D
Rally
2022-01-02 08:12:02
<@!794205442175402004> is it possible to do multiple steps in a "then" stage of an if?
_wb_
2022-01-02 08:28:58
You can have nested ifs but in the end you always have to reach a single leaf node that is a predictor plus an offset
Rally
2022-01-02 08:33:52
question, how do I use the embed bot? :)
Cool Doggo
2022-01-02 08:36:22
right click the message and then hover over apps
2022-01-02 08:36:42
embed is for jxl files
Rally
2022-01-02 08:36:48
oooooh
2022-01-02 08:36:51
Bitdepth 16 Upsample 4 Width 1024 Height 1024 RCT 1 if c > 2 - Set 0 - Weighted 128
embed
2022-01-02 08:36:54
2022-01-02 08:36:58
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/927299439310282852/message.jxl
Rally
2022-01-02 08:37:11
any idea how to get the "oil spill" effect to be bigger?
2022-01-02 08:38:05
and just overall more uniform
Cool Doggo
2022-01-02 08:38:44
for that you could either increase the bitdepth or decrease the "128"
Rally
2022-01-02 08:38:50
lower weighted seems to do the job for making it bigger, but not more uniform
2022-01-02 08:39:25
oh shit bitdepth was a very good call
JXL Art Bot
2022-01-02 08:41:24
**Mr.Korrupto** _“Early Practice #2”_ 2022 image/jxl 26 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDLhCi0oTswtyElVMOEKz0wBihkaAEU9UjPTM0og7CDnEAVDLq7MNIVkBTsFIy4FBV2F4NQSBQMwKxysMjVFwdDU0IgLAA%3D%3D
2022-01-02 08:53:40
**\_wb\_** _“Misty Ruins”_ 2022 image/jxl 42 bytes https://jxl-art.surma.technology/?zcode=XY3BCsIwEETv%2BxVzl8AmGo9CFLGnIqLkrDS2gQihDf1%2B1ygIPb43szv7WLqQy4AtXQ5XaPKxEzKWqQmxHwosM93ydH%2FlFLAhik%2F4U4MdmACB8xhm95iO4yjOiAMU3Ny7lKC%2BLK1WQs1c8Vfwq9ZDafuXvi6Grr757MiRWjMtUmWWRtMb
Rally
2022-01-02 08:56:19
oh this is sick af
JXL Art Bot
2022-01-03 03:12:16
**\_wb\_** _“This is fine.”_ 2022 image/jxl 64 bytes https://jxl-art.surma.technology/?zcode=fVDLCoNADLznK3IvC7td3d4Ktkg9ifTBntu6VcGCqAj9%2B2Z9ofZxy0wymUl2WR2bok5RwXF%2FRgE6iwlJKSEwWZLWqJSCS1Fdn0Vu0AHIHhhFpWlwixwQGZ5MjcKlkjp3YgWVLQgJsDVvoR30miRchT4ysaA08kHzIo0zSAjrQ9AbjZQ1926VX5Z2duz067w8RzEh7Q6a2%2FAJN0adk3aDbo82MQX%2F0xP2P%2FPmcJyEhTNTHD4HNTIJX5e7k%2BvnGbtX8w8D14UfMWd8J34D
_wb_
2022-01-03 03:15:24
https://c.tenor.com/-kZOB16tELEAAAAM/this-is-fine-fire.gif
JXL Art Bot
2022-01-03 08:18:33
**\_wb\_** _“Something rainbowish”_ 2022 image/jxl 64 bytes https://jxl-art.surma.technology/?zcode=ZZBdC4IwFIbv9yveexm4TaVugoqgK4M%2B2LXo0kGZ1Ij6902zNfVuz8vheXfOSptCNabCjOzXRzAidWFJhCHZKl1WBol9nppHdm0uChHZ3bWqTWb0rbbTRJ%2FxxgLcDgE9iA4cRj26IHYBQLF8lmmQbjDNpMvGU8MJq82tlv1KXxa8yhYZ9%2FUSVAxQuJ6DMqAsdgvkU9ff1Afc2%2BfrYyOm3KtrK3jsSWXrSAYf7E6vCvuV8a1kkILNyQc%3D
monad
2022-01-03 08:20:53
>black
JXL Art Bot
2022-01-03 09:39:27
**\_wb\_** _“Rainbow Cubicles”_ 2022 image/jxl 49 bytes https://jxl-art.surma.technology/?zcode=VY49C8IwEED3%2FIrbQyBpKzoJ6uIUwQ8yFxvbA61BD%2FHne21qSLf3wt3LbZEaH6gDo8VxdwYjHDajFpXYe2w7inwJ7%2FoR7p4nDi%2F0PdWEz55N4A2usGYCYPwyasYklY4KoMCBKjIpRaSTJ1CLcW6KzQr%2F%2FUmXKRgrZmbZB0PWaJ1adrgyu2bzaa20vFLmT05akCse%2BwE%3D