|
|
JXL Art Bot
|
2025-07-06 04:07:38
|
**\_wb\_**
_“A selection of Occam's razors”_
2025
image/jxl
31 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKcg5RMDTm4uLKTFMI1%2FbT9QtXsFMw4FJQQOYbmZoCRRQUdBX8XBV0Lc2hnODUnNTkEgVDLhDHsSwdqD5cwZwLAA%3D%3D)
|
|
|
CrushedAsian255
|
|
**\_wb\_**
_“A selection of Occam's razors”_
2025
image/jxl
31 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKcg5RMDTm4uLKTFMI1%2FbT9QtXsFMw4FJQQOYbmZoCRRQUdBX8XBV0Lc2hnODUnNTkEgVDLhDHsSwdqD5cwZwLAA%3D%3D)
|
|
2025-07-06 04:54:45
|
Nice title
|
|
|
|
JXL Art Bot
|
2025-07-07 09:44:35
|
**\_wb\_**
_“Alien Muscle Tissue Sample”_
2025
image/jxl
37 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKcg5RMDLn4spMUwgoSi1TsFMwNDHgUlDQVXAsSw%2FX9gtX0DUEcoHSQI4ukGunAJJGFTEyNQWLQbU55uQAdQFNhYkFp%2BakJpcAbYMrAZtsaMkFAA%3D%3D)
|
|
2025-07-07 08:27:37
|
**\_wb\_**
_“Entropie Émergente (Étude nº 241)”_
2025
image/jxl
28 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQMDTgcknNKUkMSMxJLSlJ5eLKTFMI1%2FbT9QtXsFMw4NJV8HNV0DUyMQSyHMvSgTIKhlwKCgpcAA%3D%3D)
|
|
2025-07-28 10:26:06
|
**dogelition**
_“ITU-R BT.2111-3 (2K, 10 bit, full range PQ)”_
2025
image/jxl
234 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=rVaxctswDN3xFfwB3wEgaIlLhgy9TLm0HTL3EiXxkGsu8ZD8fW2XlCUBsGRfNvGBJAi8B0D3m8ftS6DcCtx0m%2BeXbSDOAj%2Fe%2F7x2d38%2FwmotYcUkcL3ZPnZv%2B70Iv7oHJsRw9xNg8xSew1VgghDqN%2B%2B%2Bj6t4WB3Wn7u1xKYAPdQw9lAPtjgEj3A7hg%2BGh51hCvcGUoYQVuF3tw2pZdfGqM8VS15%2F2wuYk2uLMTkvSJJggX%2FXe41eHEuUFswTaZiv%2F9jRadmTZcw3SZzyzRw13xGjxXdqGh3W3rCWxsr3QU9kZbUaW8uow9E28XlEJ5OUYX77ZfTF5MpDRVje32SY8er4rNSyjbfjgijeMsEJX6anElmDYHmPoD3n2mq%2B9r1BBr1mD%2BSotIejS%2B5HDyicoTpEo2ZQVYxiCTaiI1gh9ASbKJ4QrBKRXW%2Bm%2FpCjK9rMnrZashtAQxbTaxLNDDG4URSBYB7m%2BUv1gB6UidPbgApZCWfNEU26%2BBxHFhGzTfxkkt2hgHBOD3I9XT57zny2c%2Biy5rX4%2BuGBSZWrGi8cDmU9rvCxb2Pu1NFCDLNDpf6PqFIxnuELf9L5lC7rz0gCM1mLx7EK1qg4s96m1aZqrVYO5kU5c8TiZWxWxXievhfIbOE0RFhwswKPCvgH)
|
|
|
dogelition
|
2025-07-28 10:26:30
|
they updated the standard to change the position of the gradient, and the colors are quantized differently
|
|
2025-07-28 10:26:44
|
+ i found an optimization to save 1 byte
|
|
|
dogelition
|
|
2025-07-28 04:35:17
|
don't know if it was an android or chrome update, but this is actually fixed now on my device (poco f7 pro)
|
|
|
|
JXL Art Bot
|
2025-07-28 09:09:30
|
**\_wb\_**
_“Stairs mutating”_
2025
image/jxl
29 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKcg5RMDTm4spMUwjX9tP1C1ewUzAyNeVSUNBVCFfQNTK1BDMdy9KB0uEKhlwA)
|
|
2025-08-03 02:07:42
|
**\_wb\_**
_“Entropie Émergente (Étude nº -225)”_
2025
image/jxl
31 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOBySc0pSQxIzEktKUnl4spMUwjXDQ%2FX9QvX9gsPV7BTMOBSUAAJavsBxaB8BQVdheDUnNTkEgVdIyNTqIh7UWJKZmpeCVgJEteQCwA%3D)
|
|
2025-08-11 02:17:33
|
**eis**
_“broken prism”_
2025
image/jxl
33 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5eLKTFPwC9f1U7BT0DXkUlAAcsPdPYA8AyBHQUFXIVzB0MgCyvZT0DUyNeUCMR3L0sO1%2FUByAA%3D%3D)
|
|
2025-08-11 02:17:54
|
**eis**
_“broken prism”_
2025
image/jxl
33 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5eLKTFPwC9f1U7BT0DXkUlAAcsPdPYA8AyBHQUFXIVzB0MgCyvZT0DUyNeUCMR3L0sO1%2FUByAA%3D%3D)
|
|
2025-08-11 03:33:32
|
**eis**
_“the smiling face”_
2025
image/jxl
116 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=zZFNC8IwDIbv%2BRW5yyDp%2BrWLICp4ElFhZ8G6DcbwUPz9dvELL166gy0lKWlfkuddhT6edqc%2BxBhgvzyihbo7xxaZlIZN6Jo2PnI4XPtuCIBpKSLM2qLiJlEpJ1HhPBEmKL3G1zGsANbD%2BYlsenTlHxmQj85qEmxj%2FIHuMzRTTsNjlmXDW4Xzm8mnx5aEnFKJoEvRe7SVwdIodIpQs0WX6toTOiOEUzRgtJa7JS916x7vnbLy31Uket6IM1%2BudBesZ9tiW%2BNc5ijwEOIzW9yaVMOC7w%3D%3D)
|
|
|
monad
|
2025-08-14 07:53:53
|
that'll teach me not to check this channel before sleep
|
|
|
Sirox 𒅌
|
|
_wb_
|
2025-08-29 12:34:20
|
ok then
|
|
|
|
JXL Art Bot
|
2025-08-29 12:34:27
|
**\_wb\_**
_“The Snake”_
2025
image/jxl
110 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=rZJNC8IwDIbv%2BRW5j0r3Ud3Jgyh6GsIOPQ8bXaGUIfn%2FmM4N6nm2hCd5C2%2FTjzMFHu5DIGYC6x2PWGqt4Ub%2BNfI3P3l2NM0rANBPwUcClKE3TSV2yaX6i8u2XhaTdlMzqtwZqLS4GQ2tUPKZErO%2BshYeMkpAnbER7jNKQJPRCE1O2a8xGev0UJfolrcC%2F0SrrFWdLTpr8YjpuEksOtGWGlFhT4EenC51Va7vwXmK8hXgpzQf)
|
|
2025-09-07 02:13:06
|
**\_wb\_**
_“More Delta Palette Abstract Stuff”_
2025
image/jxl
32 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5XLKLElJLSjJULDg4spMUwjXDQ%2FX9QvX9gsPV7BTMOBSUAAJavsBxaB8BQVdBfeixJTM1LwSBV1DIEAXBAkgcY0A)
|
|
|
jonnyawsom3
|
2025-09-07 02:14:48
|
Delta palette my beloved
|
|
|
lonjil
|
2025-09-07 04:55:17
|
what the heck
|
|
|
Haley from hai!touch Studios
|
2025-09-12 10:21:13
|
The page is erroring out on Firefox *and* Chromium Android
|
|
|
A homosapien
|
2025-09-12 10:32:04
|
Which one?
|
|
|
Haley from hai!touch Studios
|
|
A homosapien
Which one?
|
|
2025-09-12 10:37:18
|
https://jxl-art.lucaversari.it
|
|
|
|
JXL Art Bot
|
2025-09-12 10:38:20
|
**Haley Halcyon**
_“Baby’s First Sierpiński Triangle”_
2025
image/jxl
28 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=C89MKclQMDQwMuHySM1MzyiBsJ0yS1JSC0AyXFyZaQoVCnYKBlwKCkBmJZQJ5viF6%2FrB%2BQoKugrBqUADoDyEvC5MCKbEAI0PtIWLC1UaKgEA)
|
|
2025-09-12 11:03:30
|
**Haley Halcyon**
_“Randomized: Laser Slopes”_
2025
image/jxl
136 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=bVOxasMwEN31FdqNwDpJjrQUDA3NZAIdNKeJmgQ8pSa0kI%2Fv6ezYkuLNvJPv3bv37j30w2F%2F6MMwBOavp%2BHCwTRsF67ny0Cf7PrN97dwb79%2Btrcbf%2BOy0YzziEZ4wmCDGKFeeI%2BIkM4SNIJVJ7oRbtQEj4WPHaHWzCjngn8GJM%2BQ9n7uKmxRSbVhC0yIMwvTwz%2BwISiTsiD5Nk5ZQ8HSh%2BPABTQlVdv3OJSs0yZHGlTq5O3CB2nnqQmKjspkVqEN0SqkyQqkBsW8wOP8XWSpm6IWf%2FLkVTjxClaqs8ba5YMn7gHY1elxt6DK6fdTGKIC%2BaLAR4c3K8JwEXaOCHE%2BdY5uC%2BtYsbtKajUmrcOV4T8Onh1oG3o1YKB06lqSUW1WEyWkgXw1v%2Fi6sG0aUkpXwNTAGZatYI7okgOYfE1nhToJbkdnJFnOKE2WwT98pBQrMuNKa7NzVe4lgHR02q6551bM26IVpgw4nSLLYxHp0ut8XhJoKD2J8m0hRDS5Qz7uFnP7Dw%3D%3D)
|
|
2025-09-12 12:52:21
|
**Haley Halcyon**
_“Waterfall Brushes”_
2025
image/jxl
38 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5QrPTCnJUDA0MDLh8kjNTM8ogbCdMktSUguAMhZcXJlpChUKdgoGXAoKQGYllAnm%2BAE5piZgnoKCrkJwaglUDiIbrgtSAJMHqXAvSkzJTM0rUdA2hosiVOoilIIUh4MdlJqioGuMXRxqCMJiCMvI1JQLAA%3D%3D)
|
|
|
|
ignaloidas
|
2025-10-19 02:00:53
|
Is there a reference somewhere on how Squeeze makes extra channels (and groups? idk how else to explain what I'm seeing)? Just guessing doesn't seem to work for me
|
|
|
CrushedAsian255
|
|
ignaloidas
Is there a reference somewhere on how Squeeze makes extra channels (and groups? idk how else to explain what I'm seeing)? Just guessing doesn't seem to work for me
|
|
2025-10-19 08:05:55
|
Well there is the official specification but it’s a bit hard to read if you’re not already familiar with image compression systems
|
|
2025-10-19 08:06:10
|
Free versions of it are floating around this Discord
|
|
|
jonnyawsom3
|
|
ignaloidas
Is there a reference somewhere on how Squeeze makes extra channels (and groups? idk how else to explain what I'm seeing)? Just guessing doesn't seem to work for me
|
|
2025-10-19 08:33:34
|
If you want a technical breakdown, there's a paper explaining all the features of JXL https://arxiv.org/abs/2506.05987v2
Specifically for JXL art, I'm not entirely sure how it works...
|
|
|
|
ignaloidas
|
2025-10-19 08:36:36
|
yeah, I was asking more on how it works for jxl art, seems like there's little control for squeeze in the current tool even if the standard allows for more flexibility (e.g. squeeze levels always go down to 8x8, even if I don't need/want them to do that)
|
|
2025-10-19 08:37:39
|
I guess time to read the specs and see how hard it is to make a tool myself to construct the MA trees and header
|
|
|
Inner Hollow
|
2025-10-19 08:42:47
|
i am dumb i can grasp the logic behind the logic tree but i still need a video tutorial
|
|
2025-10-19 08:42:51
|
is there a video tutorial
|
|
|
|
JXL Art Bot
|
2025-10-19 09:55:32
|
**PetrKDN**
_“View from Space”_
2025
image/jxl
35 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOBySc0pSQxIzEktKUnl4spMUwjX9tP1C1ewUzDg0lXwc1XQtYQAIM%2BxLB0oqwDmKSgocAEA)
|
|
|
𝖇𝖔𝖇𝖔𝖇𝖔
|
2025-10-20 04:50:45
|
Where is this bot getting its art from
|
|
2025-10-20 04:51:01
|
Can anyone showcase their art here too
|
|
2025-10-20 04:51:04
|
?
|
|
|
jonnyawsom3
|
2025-10-20 05:10:17
|
When people submit their art on the website, the bot posts it here
|
|
2025-10-20 05:11:47
|
If it's regular art instead of made with MA trees, probably fine to post in <#803950138795622455> or <#806898911091753051>
|
|
|
monad
|
|
𝖇𝖔𝖇𝖔𝖇𝖔
Where is this bot getting its art from
|
|
2025-10-20 09:35:18
|
click the "source tree" link
|
|
|
𝖇𝖔𝖇𝖔𝖇𝖔
|
2025-10-20 10:58:40
|
Ah alr thx for the info
|
|
|
Inner Hollow
|
|
𝖇𝖔𝖇𝖔𝖇𝖔
Where is this bot getting its art from
|
|
2025-10-20 07:57:35
|
i learned that if you press publish on the art site a bot publishes it here
|
|
2025-10-20 08:02:51
|
whats the easiest way to make seemingly random noise image?
|
|
2025-10-20 08:05:06
|
wait what
|
|
2025-10-20 08:05:16
|
every time i press run without changing anything it changes the image
|
|
2025-10-20 08:05:21
|
im stupid
|
|
2025-10-20 08:05:25
|
what am i doing wrong
|
|
|
jonnyawsom3
|
|
Inner Hollow
whats the easiest way to make seemingly random noise image?
|
|
2025-10-20 08:05:56
|
https://discord.com/channels/794206087879852103/824000991891554375/1365778611570741372
|
|
|
Inner Hollow
every time i press run without changing anything it changes the image
|
|
2025-10-20 08:06:26
|
Can you press the share button and paste the link here?
|
|
|
Inner Hollow
|
|
Can you press the share button and paste the link here?
|
|
2025-10-20 08:06:47
|
https://jxl-art.lucaversari.it/?zcode=dVDLCsIwELznK_ZeAkmfngQV0VMEFXKWGttcqkgQ_Xt32_QRqrfZYWdmZ9fWXc3D1bBgh6c1jbs4e2-gYMfNGXLG7A0-sAQZMwDEJWKBEICD8gjpN9KZ6MaW0Ls9UZ6g7dWrUpHSEEE8Y7eI4lFMbmkhwjVNYj5qh5BxL4iRP2jKkV2RtlSS9wXKiZEf5TQqLNh5nozDg-ZcKubK8Brt7wh1MhPsbyC9Owoeqsgk6wto3OeDAUYYW9XOXIFLNg1J2oO_
|
|
2025-10-20 08:06:54
|
im still learning tho
|
|
2025-10-20 08:07:06
|
so i could totally be missing something
|
|
|
jonnyawsom3
|
2025-10-20 08:08:41
|
It fails to decode for me
```JPEG XL decoder v0.12.0 6efa0f5a [_AVX2_] {Clang 20.1.8}
Failed to decode image
DecompressJxlToPackedPixelFile failed```
|
|
|
Inner Hollow
|
2025-10-20 08:08:50
|
huh
|
|
|
It fails to decode for me
```JPEG XL decoder v0.12.0 6efa0f5a [_AVX2_] {Clang 20.1.8}
Failed to decode image
DecompressJxlToPackedPixelFile failed```
|
|
2025-10-20 08:11:20
|
|
|
|
jonnyawsom3
|
2025-10-20 08:13:03
|
Oh, it's a noise texture? It's just black for me with a few random pixels every time I press run
|
|
|
Inner Hollow
|
2025-10-20 08:13:58
|
hm thats odd
|
|
2025-10-20 08:14:17
|
shouldnt... the.. thing work the same on every device..?
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2025-10-20 08:47:35
|
I have the same as jonnyasom2
|
|
2025-10-20 08:47:45
|
maybe try to delete cache?
|
|
|
|
JXL Art Bot
|
2025-10-21 01:57:59
|
**Jonnyawsom3**
_“All RCTs (No-Channel-Permutation)”_
2025
image/jxl
894 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=7ZS%2FTsMwEMb3ewq%2FAJLtuE66ILUwMKCoAqTMFQ2tB1pUDIK3xwmBxME34fGbcved7%2FO%2F%2BLc6uuetd6cjXb%2Bd%2B0AoKSWtnd%2B1L%2F4gKmrcLny1NBXdtG5%2F8N%2Fx3dWDkFSf%2FO321RO5J%2FEoLoMixBCqEPbJx6AP6WZzbt8nkhAXopllahz%2BGQ3t%2BuftXUv9J1d22rQPHbqaDBm0Qk%2B0UTWROuqLmd5Ndd%2F2J8JWJONVMB1qadlKerXcDIrzMZKrFDbtpZdsh%2BYqqfPWJrUDzc1aMt4ld0SlZpy4m7MVV0ivlPNnb5M7noox4i6N%2B8EkJR5KSOt%2B14ZSo3%2FfCM1r0XMNSRO5xB7jQ%2F3RafUvnCjgBDgBToCTPDjRwAlwApwAJ3lwUgAnwAlwApzkwYkBToAT4AQ4yYOTBXACnAAnwEkenFjgBDgBToCTPDgpgRFgBBgBRr4A)
|
|
|
jonnyawsom3
|
|
|
embed
|
|
|
|
2025-10-21 01:59:56
|
https://embed.moe/auto.gif?q=https%3A%2F%2Fcdn.discordapp.com%2Fattachments%2F824000991891554375%2F1430012686086967346%2FRCTs.jxl%3Fex%3D68f83a98%26is%3D68f6e918%26hm%3D7d64339e7b96916e02936b946e6be5e2ee9b9571d57d2fc7fd2dae1f7d3297b5%26
|
|
|
jonnyawsom3
|
2025-10-21 02:01:10
|
The JXL plays at 1 fps, so sorry about the epilepsy from the bot
|
|
2025-10-21 02:05:25
|
|
|
|
|
embed
|
|
|
|
2025-10-21 02:05:29
|
https://embed.moe/auto.gif?q=https%3A%2F%2Fcdn.discordapp.com%2Fattachments%2F824000991891554375%2F1430014080449511495%2FPhoton_Noise_Frame_Seed_Demo.jxl%3Fex%3D68f83be5%26is%3D68f6ea65%26hm%3Db1d691ca47dc463287c1e49f4f8f133a15edd3fa64bec48568652749073a5e2a%26
|
|
|
jonnyawsom3
|
2025-10-21 02:05:49
|
Discord previews strike again
|
|
|
_wb_
|
|
Inner Hollow
https://jxl-art.lucaversari.it/?zcode=dVDLCsIwELznK_ZeAkmfngQV0VMEFXKWGttcqkgQ_Xt32_QRqrfZYWdmZ9fWXc3D1bBgh6c1jbs4e2-gYMfNGXLG7A0-sAQZMwDEJWKBEICD8gjpN9KZ6MaW0Ls9UZ6g7dWrUpHSEEE8Y7eI4lFMbmkhwjVNYj5qh5BxL4iRP2jKkV2RtlSS9wXKiZEf5TQqLNh5nozDg-ZcKubK8Brt7wh1MhPsbyC9Owoeqsgk6wto3OeDAUYYW9XOXIFLNg1J2oO_
|
|
2025-10-21 08:09:50
|
it's a malformed tree, it misbehaves when you do that.
you have
```
if y > 12
[then something]
[else] if y > 136
```
|
|
2025-10-21 08:10:52
|
the `y > 136` is not an allowed test in the branch that has y <= 12, since it will always be false. Only tests are allowed that can still split the remaining range.
|
|
2025-10-21 08:11:19
|
I'm not sure what exactly happens in this case but I think it just writes a bad jxl that the decoder will refuse to decode
|
|
|
Magnap
|
2025-11-10 09:01:57
|
I'm not entirely sure which channel this would fit in, but I think the best fit here: is there a tool to extract the MA tree from a Modular JXL? Or just setting all the residuals to 0? Essentially converting an arbitrary JXL into its underlying JXL art
I know that the prediction models that the MA trees describe are autoregressive, so the resulting images probably wouldn't be all that interesting-looking without the residuals to guide the prediction process in the right direction
I tried looking at the various crates, but I didn't spot a way to manipulate the bitstream in this way
|
|
|
AccessViolation_
|
|
Magnap
I'm not entirely sure which channel this would fit in, but I think the best fit here: is there a tool to extract the MA tree from a Modular JXL? Or just setting all the residuals to 0? Essentially converting an arbitrary JXL into its underlying JXL art
I know that the prediction models that the MA trees describe are autoregressive, so the resulting images probably wouldn't be all that interesting-looking without the residuals to guide the prediction process in the right direction
I tried looking at the various crates, but I didn't spot a way to manipulate the bitstream in this way
|
|
2025-11-10 09:33:34
|
I don't know if we have a tool for that, but we do have the code for generating these:
[The JPEG XL Image Coding System](https://arxiv.org/pdf/2506.05987#subsubsection.5.2.3)
|
|
2025-11-10 09:34:34
|
so this does give you the MA tree as well
|
|
|
Magnap
|
2025-11-10 09:41:53
|
Ah that's cool 😄 figure 26 is (cooler than) the sort of thing I had mind, but for arbitrary trees
|
|
|
|
veluca
|
2025-11-10 09:42:17
|
that's in the encoder IIRC though
|
|
2025-11-10 09:42:48
|
(not that it'd be too hard to do that in the decoder too, with some code change)
|
|
|
AccessViolation_
|
2025-11-10 09:42:53
|
you could potentially try altering the code to replace all would be residuals with 0 at encode time, though prediction error is a property which itself can be used as a decision node in MA trees, so there might be side effects that mess everything up depending on how you do this
|
|
2025-11-10 09:43:37
|
iirc the images in figure 26 are entirely created using the jxl art tool
|
|
|
Magnap
Ah that's cool 😄 figure 26 is (cooler than) the sort of thing I had mind, but for arbitrary trees
|
|
2025-11-10 09:49:50
|
I was messing around with the code used for generating Figure 27 some more here
https://discord.com/channels/794206087879852103/1346574799396147220
|
|
2025-11-10 10:06:46
|
I thought there were more examples there, I think I posted a handful in some channel instead
|
|
|
Magnap
|
|
AccessViolation_
you could potentially try altering the code to replace all would be residuals with 0 at encode time, though prediction error is a property which itself can be used as a decision node in MA trees, so there might be side effects that mess everything up depending on how you do this
|
|
2025-11-10 10:40:15
|
Oh yeah, that's a second level of autoregression kinda
|
|
|
jonnyawsom3
|
|
AccessViolation_
so this does give you the MA tree as well
|
|
2025-11-10 03:13:47
|
Kinda. It gives you the tree in a formatted graph file, so you can't edit it or use it for another en/decode
|
|
|
AccessViolation_
|
2025-11-10 03:14:50
|
yeah that's what I meant ^^
|
|
|
jonnyawsom3
|
2025-11-10 03:17:56
|
MA tree saving/loading has been brought up a few times as something for the API. It'd be nice if it was formatted to match jxl_from_tree, then we could do such editing with existing tools
|
|
|
pshufb
|
2025-11-20 09:48:45
|
my algorithm for creating this sucks but it's supposed to resemble the mona lisa 🤷♂️ https://jxl-art.surma.technology/?zcode=lVixkt02DOzfV7zekxkCBEmwcRE3rp3M5APii32diyt8f5_TkwVQwg7N6ziSKIDAYrHgP89fX77fqfHt89Pzt-8vdy719ufzy9enH2_P9fbl09_3dLs9_3d_vX-8U27b8ufbUtUelnwsOZEtmbflv9sHtz_ufz293D9wOR6l41HOtrJfk3_nW2vcWo6VuFWSuLWHrVKPVc3h-xxNVXvZybws1SKg6Z1nrdFqC9-X0X74v8T_X46wexnTIDmaaseqFdua35lBiV7maErUTsUOFjGrnksQJY5RevMyIEj4WBWQ3xR9sn-UuhKuamfWNR_FfgaQEv1hOQd8B1m34-Vj1Zq97upV2OIhIlxaP1ZEMUo1noLYwkQ11hnFOmODFQ_eiac9WZ56zBPPKkLD9yVik5IlirJa-KItLzDfS5aEX0W0ew82J2DYUE6SV44mFqoqnlPDsVhFN1nzvrr30YEOXC7FMwmqQMMO9TOSYRMAg2MB5Tac-zhiRC2lCNsNelY5kXEksncfEGzstkNvT6mhMAMU9kk3UF7i5TypftRtPMJ5JZisZ1w9oFOtUZW2ROM8a05TGvfwWUxJZIl385l3HwCKzb-kGfYY1Fc8X6EzdTw0TLQUC7N5ISFepQlJFavkavVByRVE9kpn_wDUAQC1V4GWpRbUzj_brDaHS_JGwtnFQ1npC11H1lmJkPk-xAUQh0Rb1ZpWi2lviIidTKitMGczGgSqritgWudNclG8M-IumtM7NYjMlDCqxTaRs6h45JKw3ZZXL-DVrBOzCCeRN5UGB8zUoPxoSbuPJb2i1ax-u6w04mxolnLmpKFQtoegSbZYp-RjCml2eBBodgBcagzJbLzVaAmYtXijjI2tRF-1XhTh5qq2s_LYnvV-yd_pzwqEWHaxqemsXn8Hmy1WplFAKclMJhq_gFYqQGDm887HYdOKmp7ycetTMQ3ELwD-AEzHIC2dSs4M-eD-NfocRXDMdAfCs_BFRj4ybSLPGZIvCmXnSkBgMus4uax5Vb0W8gq5uRr2iRjM0mBsl34ecH83KzQ-w2QvK51oUikTd2tbKfVm3N2XilDNSV2SJx7v4i2ehhuTY-XCb5jQqKBZABSRS2sC2pqAuKbanIlohbt6H8XEMTQYZEvyA_jdSYnactAf7o34azT_gExTc_B3BmFCw6CfmSuwkmZT1mYwbAFjzuksXuYgLQRcZO893JfaW_JDJQORGsSy5aVfJcb2WsoSjPt5Kr_AC2SneHaaGfP7OFBt4C9SJhqn0IRCuov3BDINpkcSnt0UyOwWphhh-RVsXSoqkkEWORmUlRmg5QgLb2II_jwrMjDhDzKgXQa3vXWByDJgJ53Z7XWOaWMYMASgrLRB8doYDvgBmOXhmgykT9c4kS55fChnGzHBaNIBo9fhXhTcdMk0ZsO9rywNouU8Tf40wno138_oAtOvAzn5dR1qRjQ7LYF7vY7uYGnGk6DTe79zSeuNyhdg2Mm61oWdfhjcJCuoDO6Xm-TX07U2iLyCzPvFF9W6pHr6ufgetmKqKrhDzKMkjrlF49cQIGcR0OQzKgMFUyOYfjqgVtJptwejBTnhoXsYjcjtFaC-OmXJZMabXwSWlQGg-bTV1yQQD0t3E4WH5i0SSS6ejnduD4ghNKwMjAZ2aAxfHy72_wc
if you run it through libjxl w/effort 9 it does better 🫢
(edit: as in, libjxl does better. again, the algorithm kind of sucks 😔 )
|
|
|
_wb_
|
2025-11-21 07:38:27
|
we should add a way to jxl-art to specify the residuals per node (say, as a list of numbers followed by another list of numbers that gets repeated as long as needed), instead of only allowing infinitely repeating zeroes in all nodes (which would be `[], [0]`). That would make it a lot more expressive, since you'd no longer have to rely purely on the predictor offset like it is now.
|
|
|
pshufb
|
|
_wb_
we should add a way to jxl-art to specify the residuals per node (say, as a list of numbers followed by another list of numbers that gets repeated as long as needed), instead of only allowing infinitely repeating zeroes in all nodes (which would be `[], [0]`). That would make it a lot more expressive, since you'd no longer have to rely purely on the predictor offset like it is now.
|
|
2025-11-21 05:30:34
|
that would be wonderful!
|
|
|
itszn
|
|
_wb_
we should add a way to jxl-art to specify the residuals per node (say, as a list of numbers followed by another list of numbers that gets repeated as long as needed), instead of only allowing infinitely repeating zeroes in all nodes (which would be `[], [0]`). That would make it a lot more expressive, since you'd no longer have to rely purely on the predictor offset like it is now.
|
|
2025-11-25 04:04:53
|
My current project is semi related to this (setting residuals)... more to come... 🤔
|
|
2025-11-25 05:45:13
|
My script finally finished....
May I present the first ever JXL hashquine! This JXL image displays its own MD5 hash!
```bash
$ md5sum jxl-hashquine.jxl
c0dec000ec179f9af04ef4d7ee0c6c59 jxl-hashquine.jxl
```
|
|
2025-11-25 05:49:50
|
I'll do a technical writeup of this at some point but whew it involved so many hacks to get working
|
|
|
AccessViolation_
|
2025-11-25 05:59:04
|
woah!
|
|
2025-11-25 05:59:05
|
impressive
|
|
|
|
veluca
|
2025-11-25 06:00:43
|
I imagine having the md5 start with 'c0dec000' was for extra flexing
|
|
|
itszn
|
|
veluca
I imagine having the md5 start with 'c0dec000' was for extra flexing
|
|
2025-11-25 09:38:00
|
To be honest that was the easiest part. You can brute force 32bit prefixes of md5s in about 5 min on a laptop
|
|
|
|
veluca
|
2025-11-25 09:38:29
|
yep, that makes sense
|
|
2025-11-25 09:38:48
|
did you do patch copying + arbitrary bytes in the red part for changing md5?
|
|
|
itszn
|
|
veluca
did you do patch copying + arbitrary bytes in the red part for changing md5?
|
|
2025-11-25 09:42:36
|
Yes I modified jxl_from_tree to allow arbitrary error bytes to be supplied, but I also had to do a bunch of messing with the encoder and compression settings, such as crafting a specific Huffman tree that allowed me to replace arbitrary bytes in the file after encoding
|
|
|
|
veluca
|
2025-11-25 09:43:03
|
ahhh nice trick
|
|
2025-11-25 09:43:50
|
I am guessing you could have gotten the same result possibly more easily by adding a 8-bit huffman code for a patch frame that never actually got used
|
|
|
lonjil
|
2025-11-25 09:44:00
|
now to nerdsnipe someone into improving jxl_from_tree by a lot by announcing a "smallest jxl hashquine challenge"
|
|
|
itszn
|
2025-11-25 09:46:13
|
You can certainly make it a lot smaller, most of the size comes from the lack of compression. I think if you change up the Huffman tree you probably can trivially reduce the size by at least a factor of 8. Could also do it in fewer frames, but the prediction tree complexity was growing so I decided to split it into 32 frames
|
|
|
lonjil
|
2025-11-29 02:54:05
|
is it just me or does the publish button not work?
|
|
2025-11-29 02:55:38
|
**Lonnie**
"*Flag of Cornwall*
2025
image/jxl
42 bytes
[source tree](<https://jxl-art.lucaversari.it/?zcode=C89MKclQMDQwMODySM1MzyhRMAMynTJLUlILQBJcXJlpChUKdgqmJpZcCgpATiWQYwzmKCjoKgSnligYgNlQKSOoFEzSEIVnADEDZKAJihmGyGYYo5lhAOVhWIFuCVwDAA>)
|
|
|
|
JXL Art Bot
|
2025-11-29 03:59:43
|
**\_wb\_**
_“Cornwall flag”_
2025
image/jxl
42 bytes
[source tree](https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQMOQKz0wB0QYGBlweqZnpGSUKZkAmV2aaQoWCnYKJiQGXggKUY2oG4oC5lUCukQmECxcwNoMJKCjoKgSnliig8w25MGURMmjmYpiKaiayiTAZLgA%3D)
|
|
|
_wb_
|
2025-11-29 04:00:12
|
oh lol I didn't see this was already done
|
|
|
Meow
|
2025-11-29 04:11:47
|
For reference the SVG file size on Wikimedia Commons is 359 bytes
https://commons.wikimedia.org/wiki/File:Saint_Piran%27s_Flag.svg
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2025-11-29 04:16:23
|
or 277B once optimized <:KekDog:805390049033191445>
|
|
|
AccessViolation_
|
2025-11-29 04:31:31
|
compressed to 184 bytes with `brotli --best`
|
|
2025-11-29 04:32:28
|
zstd compresses it down to 200 with the best compression. I assume brotli's advantage here is that it has a spec-defined dictionary trained on SVGs among other things
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2025-11-29 04:36:07
|
199B with gzip
|
|
|
AccessViolation_
|
2025-11-29 04:36:19
|
since zstd supports signaling custom dictionaries, I wonder if at some point the web standard will define zstd dictionaries per IANA media types. so one for `image/jxl` trained on a large corpus to compress a lof of the header away, certain ICC profiles which are duplicated a lot etc.
|
|
2025-11-29 04:37:12
|
same philosophy of brotli, except brotli to my knowledge has a single dictionary trained on a bunch of data
|
|
2025-11-29 04:37:41
|
hmm I wonder if I can download that training data and derive a zstd dictionary from it, and see how it compares
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2025-11-29 04:37:51
|
but the post here https://discord.com/channels/794206087879852103/794206087879852106/1444335869778464958
claims the SVG is 186B, trying to find it online but can't
|
|