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

CrushedAsian255
2024-02-20 11:37:33
Yeah thanks
Tirr
2024-02-20 11:37:37
and there are also limits for layer blending and animation fps
CrushedAsian255
2024-02-20 11:37:54
I recently have very interest JPEG format xl
jonnyawsom3
2024-02-20 11:38:22
There were 2 limits cut off the bottom, both referred to animated JXL's total pixel count and frame duration respectively
CrushedAsian255
2024-02-20 11:38:27
Who needs 1TPx image lol
2024-02-20 11:39:35
How would you even Decode that
jonnyawsom3
2024-02-20 11:40:07
Cropped decode ;P
2024-02-20 11:40:11
Or squeeze
Qon
Reminds me of when I was trying to make an image of all 16bit colors, then realised it would be ludicrously large
2024-02-20 05:21:52
a 1024x1024 image has 2^20 pixels. 15 bit color (5 per channel) fits in 1024x32.
JXL Art Bot
2024-02-20 05:22:27
**Qon** _“15 bit color”_ 2024 image/jxl 38 bytes https://jxl-art.lucaversari.it/?zcode=bYy9DkAwFIX3%2BxRnlyatshpMJpEY%2BgCUdhNphLd3o6IRpnv%2B7lf7MNolOJRk%2FMhXybygxvrZBeicyE8YUEERwHJnKVleplvtpjjQMQEEDLJrmlzsBHobWN80%2BUMzb1Lcf7mp4Z%2FjAQi0PxPgBA%3D%3D
Qon
2024-02-20 05:23:25
Maybe you meant 48-bit color?
lonjil
2024-02-20 05:27:05
16 bit as in 16 bit per channel, just like when we say 8 bit, I guess.
Qon
lonjil 16 bit as in 16 bit per channel, just like when we say 8 bit, I guess.
2024-02-20 05:28:24
https://en.wikipedia.org/wiki/High_color
lonjil
2024-02-20 05:28:40
yeah
Qon
2024-02-20 05:28:55
Historically means 16 bits total
lonjil
2024-02-20 05:29:18
it's a bit annoying, that when we say 8 bit, or 10 bit, or 12 bit, it means per channel, but when you say 16, suddenly it means something else!
Qon
2024-02-20 05:31:16
Does images with 16 bits per color channel exist? I'm not talking about jxl art with Bitdepth 16, I mean is there hardware for it?
2024-02-20 05:32:31
My link links to https://en.wikipedia.org/wiki/Color_depth#Deep_color_(30-bit)
damian101
lonjil it's a bit annoying, that when we say 8 bit, or 10 bit, or 12 bit, it means per channel, but when you say 16, suddenly it means something else!
2024-02-20 05:32:33
no, 16 bit is still very much associated with 16 bits per channel
2024-02-20 05:32:50
what are you thinking of?
Qon
2024-02-20 05:34:15
So sounds like 16 bit /channel cameras and displays don't exist, only used for storage during transformations to not lose precision in 12 bit/channel data
lonjil
no, 16 bit is still very much associated with 16 bits per channel
2024-02-20 05:34:35
Qon already linked to it
2024-02-20 05:34:55
Some decades ago, 16 bit color referred to 2 bytes per pixel color.
Qon
no, 16 bit is still very much associated with 16 bits per channel
2024-02-20 05:35:26
16 bit per channel is not common, it's more bits than needed
mincerafter42
Reminds me of when I was trying to make an image of all 16bit colors, then realised it would be ludicrously large
2024-02-20 05:35:30
once i made a GIF image of the 2²⁴ 8-bit RGB colours for fun :p it takes a long time to show up because each frame adds 256 colours, and GIF viewers automatically add delay between frames :p
Tirr
2024-02-20 05:35:35
png supports 1, 2, 4, 8 and 16 bits per channel but not 10 or 12
damian101
Qon 16 bit per channel is not common, it's more bits than needed
2024-02-20 05:36:09
It is very common for internal processing of all kinds, and also for intermediate images in production environments.
Qon
It is very common for internal processing of all kinds, and also for intermediate images in production environments.
2024-02-20 05:36:31
Like I said
lonjil
Qon So sounds like 16 bit /channel cameras and displays don't exist, only used for storage during transformations to not lose precision in 12 bit/channel data
2024-02-20 05:36:35
I think cameras are creeping up to 14 bits. But in CGI, you can easily have 16 bits or more of dynamic range in a rendered image. At some point this would be tone mapped down, of course. Using 32-bit float as the intermediate format isn't uncommon.
2024-02-20 05:37:41
I think modern CGI rendering is up to 30 stops, i.e. 30 doublings of brightness.
Qon
Tirr png supports 1, 2, 4, 8 and 16 bits per channel but not 10 or 12
2024-02-20 05:38:08
Probably because of technical reasons. 16 can store 12 and 12 wasn't common at time of making png format. My guess.
damian101
2024-02-20 05:38:33
in the audio world, 14 bits was a long time the most you could get from an ADC
lonjil
2024-02-20 05:39:01
The CD standard was originally going to be 14 bit
damian101
2024-02-20 05:39:09
interesting
_wb_
2024-02-20 06:44:20
I generally assume N-bit images are images with N bits per component, so typically 3N bits per pixel.
2024-02-20 06:46:42
But it's confusing indeed. Sometimes 8-bit means like in png8 (so 8-bit palette indexed color), sometimes it means 8-bit RGB(A) like in png24 or png32.
2024-02-20 06:48:25
Using the total is very confusing, e.g. in PNG you can have Gray+Alpha which are both 8-bit so that could be called png16, but you can also have 16-bit Gray which would also be png16.
2024-02-20 06:49:56
High Color I would never describe as 16-bit, but as rgb555 (or rgb565)
lonjil
mincerafter42 once i made a GIF image of the 2²⁴ 8-bit RGB colours for fun :p it takes a long time to show up because each frame adds 256 colours, and GIF viewers automatically add delay between frames :p
2024-02-20 06:53:24
oh hey I don't see you around here very often
mincerafter42
lonjil oh hey I don't see you around here very often
2024-02-20 06:53:52
indeed, but i looked in this channel on this particular day
lonjil
2024-02-20 06:54:09
😄
_wb_
Qon Probably because of technical reasons. 16 can store 12 and 12 wasn't common at time of making png format. My guess.
2024-02-20 07:35:03
PNG is based on general-purpose compression (deflate), so keeping things byte aligned is kind of needed...
Qon
_wb_ PNG is based on general-purpose compression (deflate), so keeping things byte aligned is kind of needed...
2024-02-20 08:17:50
Yeah that was my thinking 👍
jonnyawsom3
Qon Maybe you meant 48-bit color?
2024-02-21 03:17:28
Yes, originally I was playing with this image in JXL https://commons.m.wikimedia.org/wiki/File:16777216colors.png A shame I doubt it could fit in JXL art due to needing 4 1024 groups
_wb_
2024-02-21 06:26:00
Multiple groups is not a problem.
Qon
_wb_ Multiple groups is not a problem.
2024-02-21 12:02:45
For jxl art?
lonjil
Qon For jxl art?
2024-02-21 12:06:17
if you want different trees for different groups, you can do `if g > n` to have subtrees for each group. though I have no idea how groups are numbered.
_wb_
2024-02-21 12:08:07
The numbering is a bit weird, it starts at 21 iirc
2024-02-21 12:09:34
There are group numbers reserved for things like DC, AC metadata, custom Quant tables, etc. These are all empty and skipped in case of modular-only encoding.
2024-02-21 12:11:36
Here are some examples of multi-group images: https://discord.com/channels/794206087879852103/824000991891554375/833299488520011796
jonnyawsom3
2024-02-21 12:18:55
Good to know
JXL Art Bot
2024-02-24 06:55:04
**Tirr** _“Found an interesting case fuzzing jxl-oxide”_ 2024 image/jxl 33 bytes https://jxl-art.lucaversari.it/?zcode=PY5BC4JAFITv%2ByvmmKK5roZeLKhLJw8VeAsMV3chVHQpA398L1s8vYE3M99cTjdwdtSmkr1RSFmhK7qhSNlZ6kaZRTJd44M9OYHARaFKA1X2vWxH0CtHBn8j7lHoHOAG1qSpJxL%2BQxuMumllBd0a2cjBI7O1O8jW6PYfpb45ny3Mx1UaiN1u1XwZMy1%2FHwVCnkRJHKYiXqjUxD2MHYjaveRQP7v3CJo70UbxI9iaLw%3D%3D
Tirr
2024-02-24 06:55:35
so here's the tree: ``` RCT 0 Bitdepth 8 Width 128 Height 128 if y > 0 /* What happens if N = -(2^31)? */ /* With 32-bit signed integer, -(-(2^31)) == -(2^31). */ if |N| > 0 - Set 255 - Set 0 if x > 0 - W 1073741824 /* 2^30, so it overflows at x = 2 */ - Set 0 ```
2024-02-24 06:56:47
the tree is set up so that black line appears if sample at the first line is zero (`|N| > 0`)
2024-02-24 06:58:01
the buffer is 32-bit signed, so it will overflow to `-(2^31)` at y = 0, x = 2
2024-02-24 06:59:09
now we need to take an abs of this sample value. technically it would be `2^31`, because the spec is defined in integer with infinite precision
2024-02-24 07:00:04
uh wait nvm, I was just confused I think
2024-02-24 07:00:56
no I'm thinking it right
2024-02-24 07:01:33
so... its true value is `2^31`, but with 32-bit integer abs also overflows and yield `-(2^31)`
2024-02-24 07:02:11
so `|N| > 0` is false and black line appears at x = 2
2024-02-24 07:02:40
but if we follow the spec, `|N| > 0` is true and white line should appear
JXL Art Bot
2024-02-24 07:10:26
**Tirr** _“...and weird things happen if W -(2^31) is used”_ 2024 image/jxl 33 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTDgcsosSUktKMlQsOAKz0wB0oZGFlweqZnpGSVgJldmmkKlgh1QpYICkFnjVwPl6CoEp5YoGJmawtkGYMUVYHldhXAFXSNDE3MTC2MzEwsuqAoA
_wb_
2024-02-24 07:49:35
For this reason the spec somewhere says that basically if int32 is not good enough to store modular values, the bitstream is not conformant 🙂
2024-02-24 07:50:25
So anything that overflows is technically not a valid jxl, and decoder behavior is undefined
Tirr
2024-02-24 07:51:50
doesn't abs count as an "intermediate arithmetic"? I wonder if 64-bit property vector is needed
2024-02-24 07:52:41
`-(2^31)` totally fits in 32-bit but `abs(-(2^31))` is not
2024-02-24 08:03:28
I'm not sure this tree encodes correctly with jxl_from_tree: ``` RCT 0 Bitdepth 8 Width 128 Height 128 if y > 0 if |N| > 0 - Set 255 - Set 0 - Set -2147483648 ```
2024-02-24 08:05:27
jxl-oxide decoded the tree as below (note the constant). maybe this is a bug in jxl-oxide or jxl_from_tree. ``` Decision { property: 2, value: 0, left: Decision { property: 4, value: 0, left: Leaf( MaTreeLeafClustered { cluster: 0, predictor: Zero, offset: 255, multiplier: 1, }, ), right: Leaf( MaTreeLeafClustered { cluster: 0, predictor: Zero, offset: 0, multiplier: 1, }, ), }, right: Leaf( MaTreeLeafClustered { cluster: 0, predictor: Zero, offset: -1342177280, multiplier: 1, }, ), } ```
JXL Art Bot
2024-02-24 08:12:30
**Tirr** _“Why does this turn black?”_ 2024 image/jxl 30 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTDgcsosSUktKMlQMDTnCs9MATGMLLg8UjPTM0rATK7MNIVKBTugUgUFILPGrwbIMTIAAaCIrkJwKlCdsaGBuRGca8DFBWGAlRkCAA%3D%3D
Tirr
2024-02-24 08:12:40
``` RCT 0 Bitdepth 17 Width 128 Height 128 if y > 0 if |N| > 200000 - Set 131072 - Set 0 - Set 200001 ```
2024-02-24 08:14:16
ah yeah that turns black
JXL Art Bot
2024-02-24 08:19:51
**Tirr** _“Hybrid integer configuration overflowing (I guess)”_ 2024 image/jxl 36 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTDgcsosSUktKMlQMDTjCs9MATGMLLg8UjPTM0rATK7MNIVKBTugUgUFINMPyDQ0M4ACoJiuQnBqCULIEC5kwMUFlTOHKQcA
Tirr
2024-02-24 08:20:44
`1_600_000_000` is ok, but `1_700_000_000` is not and goes somewhere like `1_163_129_088`
_wb_
Tirr doesn't abs count as an "intermediate arithmetic"? I wonder if 64-bit property vector is needed
2024-02-24 08:46:07
32-bit property vector is ok, iirc we recently clarified that in the spec because it wasn't obvious
2024-02-24 08:46:55
Property vector is considered like sample values, not like intermediate arithmetic
Tirr
2024-02-24 08:48:30
that's nice, thanks for clarification
_wb_
2024-02-24 08:50:03
It's especially useful encoder-side, since there you might want to actually store significant amounts of property values
2024-02-24 08:52:40
For lossless float32 this can actually matter. And for jxl art 🙂 For normal 8-16 bit images it doesn't make any difference of course.
Qon
2024-02-25 03:32:38
I'm updating/rewriting the frontend of the jxl-art page! 🥳 <:JXL:805850130203934781> - Now it's a dark mode look that doesn't flashbang your eyes! - Much better space efficiency with side-by-side panes! Since code is mostly vertical you can have your image in almost full screen. - Ace editor with Sublime text keybinds! Multi-cursor editing, line manipulation keybinds (like duplicate line) etc... - Nice Monokai theme. Syntax highlighting mode `javascript` works great for both javascript and jxltrees! - EJS templating language preprocessing on your code! You can include simple calculations like `<%- 2**bitdepth - 1 %>` in your code instead of supplying a value or you can generate the whole jxltree code with JavaScript! **Bonus feature**: EJS support means you can add comments like `<% /* comment here */ %>` without fear of your code being corrupted by jxl_from_tree's buggy comment handling! <:KekDog:805390049033191445> <:Hypers:808826266060193874> - Tabbed layout: EJS preprocessing steps will be output as additional tabs (if you have EJS tags in your code) so that you can view the jxltree code. - Slightly better error output messages. Todo: I'm considering adding tabbed layout to right pane as well. The tabs would be for image viewer, error message and the wtf so you can read errors or wtf next to your code instead of showing the image. Also error handling needs more improvements.
lonjil
2024-02-25 03:34:35
very cool
w
2024-02-25 03:38:01
have you tried my <https://embed.moe/jxl_from_tree>
Qon
w have you tried my <https://embed.moe/jxl_from_tree>
2024-02-25 03:39:32
First time hearing about it
veluca
2024-02-25 03:47:50
very cool 😄 lmk if you'd like me to host the updated version
2024-02-25 03:48:01
(of course you can also send a PR to surma)
Qon
veluca very cool 😄 lmk if you'd like me to host the updated version
2024-02-25 03:48:42
I do, just need to figure out how to do a PR 🤪
2024-02-25 03:49:26
I'll PR <@228116142185512960> as well if he wants it.
veluca very cool 😄 lmk if you'd like me to host the updated version
2024-02-25 03:52:26
I accidentally started by cloning `main` branch, so you will have to merge in your veluca branch edits again.
veluca
2024-02-25 03:52:36
that's fine
Qon
2024-02-25 04:10:15
<@179701849576833024> ```### Before you contribute Before we can use your code, you must sign the [Google Individual Contributor License Agreement] (https://cla.developers.google.com/about/google-individual)``` Is this project actually a part of google or is this file `CONTRIBUTING` just a file that somehow accidentally joined the folder?
veluca
2024-02-25 04:10:38
Uhm
2024-02-25 04:10:51
Good question, I think Surma used to be at G at some point
Qon
2024-02-25 04:11:15
<@228116142185512960> maybe you can clarify?
veluca
2024-02-25 04:11:35
There's for sure no such checks on my fork though
Qon
2024-02-25 05:22:59
I haven't figured out PR's yet, but you can see that it works (link was so long it became message.txt)
2024-02-25 05:24:11
my fork has `main` and `gh-pages` forks. `gh-pages` is just a branch for github pages where build files are moved into root
veluca
2024-02-25 05:27:38
nice nice
Qon
2024-02-25 05:34:23
publish doesn't work when it's hosted on github of course since the secret ENV for the bot isn't there, but the page is working correctly otherwise with ejs processing and all. The link on my gh-pages is also incorrect, drops /jxl-art/ from the url. Modifying the url manually shows that it displays correctly.
2024-02-25 05:35:25
But that should just work, with your usual build and publish steps when you host it on your site
2024-02-25 05:39:15
I just realized recursive EJS fork bombs should probably be stopped after N steps instead of letting it go on forever. Eh, closing the tab gets rid of it... but a fix would have a simple counter in the loop...
2024-02-25 06:15:04
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork tells me that I should select my fork from this list to create a PR. I'm not on the list though. <@179701849576833024>
veluca
2024-02-25 06:15:39
link to your fork?
Qon
2024-02-25 06:16:44
https://github.com/Qon/jxl-art
veluca
2024-02-25 06:17:08
that doesn't seem to be a fork?
2024-02-25 06:17:18
did you click the "fork" button on gh?
Qon
2024-02-25 06:18:55
I probably accidentally cloned it instead...
veluca
2024-02-25 06:19:10
yeah that probably explains why
2024-02-25 06:19:18
I think you might need to delete and fork
Qon
2024-02-25 06:20:21
oh ok
2024-02-25 06:33:23
Finally it worked :D
2024-02-25 06:34:21
Wait I just noticed: now I accidentally forked it from surma and PR'd him instead
2024-02-25 06:34:35
😅
2024-02-25 06:34:52
Not sure how that happened...
2024-02-25 06:36:27
No, I did fork veluca. And I used the fork link, I was definitely on veluca/jxl-art gh page when I created the fork
2024-02-25 06:37:27
But for some reason, when making a PR on veluca's page, forked from velucas repo, it defaulted to surma and sent the PR there instead.
2024-02-25 06:38:06
And the GUI just collapses if I try to change target from surma to veluca, I have to change source first or it wont work
lonjil
2024-02-25 06:38:10
GitHub is just great like that
Qon
2024-02-25 06:41:02
PR'd correct repo now
2024-02-25 06:41:45
Though I was planning on PR'ing surma as well anyways, if he wants it. So no harm <:kekw:808717074305122316>
lonjil GitHub is just great like that
2024-02-25 06:45:18
Hey at least I could just rename the first cloned repo, make the fork, `git push origin main` (and gh-pages) and then it was solved <:PepeOK:805388754545934396>
veluca
2024-02-25 06:48:09
mhhh would you mind adding ace as a submodule instead?
Qon
2024-02-25 06:51:40
doing `npm i ace-builds` instead?
2024-02-25 06:52:07
Would make sense...
2024-02-25 07:06:48
So I tried that, but I don't know how to import the theme and mode files. Do you know how the build system wants import paths? `import "ace-builds";` works to get the editor running. `import "ace-builds/src/theme-monokai.js";` doesn't work though. I've tried many variations
veluca
2024-02-25 07:24:16
I have absolutely no idea
Qon
2024-02-25 07:27:03
Maybe something with rollup configuration. I don't know how though
2024-02-25 11:57:40
I'll keep trying to figure out how make it work with ace in node_modules. But I'll be using https://qon.github.io/jxl-art/ for my jxl-art until then if you don't want my PR as it is now. Might take a lot more effort to get rollup/the build scripts to include the files I need when reading from node modules, for some reason... Lack of publish on my gh-page isn't really a huge problem, the share button works fine.
2024-02-29 03:52:21
Doing image generation experiments: Works: https://qon.github.io/jxl-art/?zcode=jZDRCsIgFIbvfYrzAsFURl0FtZtdRgVdj7QUxhghUW-fW-6sOXXdHf_zfb_isThDRi5aGAWckVLquzLdtNdGyNamG7KrW1WRUgshm0JVTSNroIToG1xhC5wArOAkDbA8t7OLmR37w-Ehn9wGWR8M7PT0NdGlbuls9mP7vt-AHSPgWugknPfMm3r13b0nT3qWevlUiMO-9SQMo1jrwzEc2_lsEVfwlpCU0sa_CS7T6vhlkfWSjrfHgeUKfEUK-admYCj5AA Fails: https://qon.github.io/jxl-art/?zcode=jZHBCsIwDIbvfYq8gLB2TnYS1MuOooLnYastjDGkiL693ewy17XdbmnyfX8CPR0ukJCr4lpCmpJCqIfUbbVXmovGdHOyqxpZkkJxLuqDLOtaVEAJUXe4wRZSArCCs9DAsszUts1M2T2OT_FKTSPpGj07fv1MdKkdWpv92a7vJmDGANgUOmpOc6ZJnfpp79lEPUO9XcrHYV4-avpRjHXhEI7p68kgrOAWnxTTcBvzDuMqbg3Jc_rwM0FgPmL4uAiyJAaviUPLovCqOWxpXM9R8gU I'm not sure why though. The second tree is slightly deeper, but I've had like depth 100 in just pure x decision trees (after 1 or 2 y nodes) before without issue when I encoded a UTM starter pattern for the rule 110 CA.
2024-02-29 03:53:00
Both should give 1 black pixel in top left corner, second link just gives an error when generating the image
2024-02-29 04:09:09
Am I doing something wrong, or is jxl_from_tree doing something wrong?
_wb_
2024-02-29 05:31:50
running jxl_from_tree directly on that second example does produce a jxl file
2024-02-29 05:32:42
so I dunno what's going on
Qon
_wb_ running jxl_from_tree directly on that second example does produce a jxl file
2024-02-29 05:37:22
Thanks for testing 👍
2024-02-29 05:37:37
But now it's even more confusing <:SadOrange:806131742636507177>
2024-02-29 05:39:07
it fails on surma & veluca pages as well so it's not my bug at least <:Hypers:808826266060193874>
_wb_
2024-02-29 06:30:38
I dunno if there are debuggers for wasm builds
jonnyawsom3
2024-03-11 02:24:03
Thought I might as well ask if anyone would like to try and turn this into JXL art. It should be *relatively* simple, but having one of the already established wizards try instead of me means it might be half an hour instead of half a month
2024-03-11 02:24:23
(Yes it's a crusty jpeg, thanks Telegram :P)
Qon
2024-03-11 04:30:57
There's more compression artifacts than signal in that mess...
2024-03-11 04:32:03
Maybe you want me to recreate the compression artifacts in jxl-art <:KekDog:805390049033191445> <:Thonk:805904896879493180>
jonnyawsom3
2024-03-11 04:39:28
ISO Noise 256000
2024-03-11 04:42:34
Not any better, but at least not scaled up
Qon
2024-03-11 04:50:22
It's not centered
jonnyawsom3
2024-03-11 04:51:26
I *think* that's on purpose, but doesn't matter much
Qon
Thought I might as well ask if anyone would like to try and turn this into JXL art. It should be *relatively* simple, but having one of the already established wizards try instead of me means it might be half an hour instead of half a month
2024-03-11 06:46:06
Took like 30 min just to get the coords https://qon.github.io/jxl-art/?zcode=7ZfPa8IwFMfv-Styl0Ly8vKSXAabFw9DxjbYWWY3C-JkK0P_-6VObW0b1urEnwch_SYv36T55PX52H3mgr0kw3TECQXrxcn7KF0075J0GE-9btnteDoasF4yHMaT7mgwmcRjrlj_I70ffKWMJW_8ld9wzTiP-FOcctB5W9SO882Hz_ib_KPwj2tBr4W1hAVp06CorEYUn_L20hkLMiCtjLMutREvtcsXkXVDyU5CvoDlELkWFtIsmxRcQSwvdWOoFLAhLzrmmTNQqaN-nkKIqfbUvbi_5quqy51WNjCviFl0n3e8H1W3NasZngW8-B8YFdguAllo6hxlLxTbWHd8hIGAd6SM0eaCSdZ-9w1JVmDPj-SIawntSNaly58vRCkpEJpfopbWPkDLEMhgNLprTm6YkwMkK4NtSQbQR4Ny29SYRVAoLZN0DnVzmLfJy2RCOKNzyp_SBSdm3D0xnzTOna1wtiGcQbj8ZPZVZoTMIwsk1DU575ScNZi2NKuaEzmDijlSaC3tlWUpgheJwEi8ZuadMvNJs7xVoSFlqGp2TktJh6maUQny_14uE-YFiI6awPzLLLFm8B0GMSdF4JitcaJ0af-9lHXhb79E4cwVrSNBq8NtS65CB6u12m89SSFrACtQsB8
2024-03-11 06:46:35
No gradient yet though
2024-03-11 06:46:52
2024-03-11 06:48:04
On https://qon.github.io/jxl-art/ you can run this code to generate the .jxl
2024-03-11 06:49:12
756 Bytes if you download the .jxl from the jxl-art page
2024-03-11 06:49:36
This file
jonnyawsom3
2024-03-11 06:50:11
Thanks for taking it on
Qon
2024-03-11 06:51:37
Adding gradients shouldn't be hard though
Thanks for taking it on
2024-03-11 07:13:14
https://qon.github.io/jxl-art/?zcode=7ZhLT-MwEIDv_hW-V5HG4xk_Lki7XDisEAIkztU2bCOhgiBawb_HgSZ1k1iblC1QyKGSPfHM-DGfx9Pz40sJ4qpYlEtpCMRJXvxZli_Nn0W5yO-CXKH4cXO3nIuTYrHIV8fL-WqV30gtTm_LX_OHUojiWv6WR5KFlJm8yEtJ4Dcd6B0Ymmf3-V8TuhC6jYAbQSOiSNTyEIvqIXFv0167ptrXU-hY1aicyllYUWxAe23qwZWm3kxqS7etXesjE21UKgvYjOja6Fpp7ABArFhZivWC6LGaHvpI2N6TraEKcEvczAfRtD7024mX0P3Se0T_MtiVrpfaWcFTR1jvHbLpruuxZ3ilcBV-aHVivYTG4VDPWbWjNMb1LGhYTPjOtLVsJ2jeARoO-zwQGo3uC0KTSVY4DhpuXTTR4WsFhMN5Hek6KLBKMYOWyU-Z5tNlmgQ02tJYaBD581Az9sKvNEwq2RjlPfFwbnbJNsamyCHvdTimiZx3SDf09nRz2OTMdiLHpchB8Ir9nt9pKeeZQwN6AudAUg6jHQuO7jn7r1DdZJqcM3vFRkGSWYNW0YTNgeSbw8Zmp5eaUqkKx3tWynxMhUMaTCg1J272y81LzHszhJtXPIwYGOcfE81eQSKinPXQuiD-e9nh048nFbZo-pfrO4fzTLqRsZwKJma93yLApFwjOiBoRW9cp63Zca2Yq1vP With gradients 914 Bytes
jonnyawsom3
2024-03-11 07:14:13
Perfect
Qon
2024-03-11 07:18:42
It's 640x640, doing `.map(coord=>coord.map(axis=>Math.round(axis/2)))` on the `coords` array would make it 320x320 (you also would have to reduce fadeout_y by the same)
2024-03-11 07:19:18
.jxl supports images done like this up to 1024x1024
jonnyawsom3
2024-03-11 07:20:04
Yeah, the size of 1 modular group
Qon
2024-03-11 07:20:26
But I'm considering... "upgrading" it. Secret project *hush*
jonnyawsom3
2024-03-11 07:20:40
Huuh....
Qon
2024-03-11 07:21:48
I'm not talking about changing the .jxl standard. And I might not bother with it
2024-03-11 07:22:19
What is the image for?
jonnyawsom3
2024-03-11 07:25:47
<@98957339243073536>'s profile picture/'logo', just because he's one of the few people that tolerates me discussing JXL at length haha
Qon
Thought I might as well ask if anyone would like to try and turn this into JXL art. It should be *relatively* simple, but having one of the already established wizards try instead of me means it might be half an hour instead of half a month
2024-03-11 07:49:15
> It should be relatively simple For me, yes :3 But before my `line()` function was written and we had the proper hidden layer support that was added recently, this would be seen as impossible. I'm exploring other techniques for doing complex shapes though. But bugs in the wasm of jxl_from_tree are stopping me atm <:SadOrange:806131742636507177>
jonnyawsom3
2024-03-11 07:56:10
The only reason I thought it should be possible is because the JXl 'logo' looked similar haha
2024-03-11 07:56:12
https://jpegxl.info/old/fallbacklogo.jpg
Qon
2024-03-11 08:01:02
45 degree angles have been possible for a long time, they are kind of part of the language. I wonder how the lower part is made though...
2024-03-11 08:02:53
Is it (without text) completely made as jxl-art though?
username
2024-03-11 08:03:28
yes
2024-03-11 08:03:41
https://jpegxl.info/logo.jxl
Qon
username yes
2024-03-11 08:04:31
Do you have the tree?
username
2024-03-11 08:06:31
is "`logo.jxl`" not it?
Qon
2024-03-11 08:07:16
I mean the jxl_from_tree text language
username
2024-03-11 08:07:23
ohhh
lonjil
2024-03-11 08:09:16
I believe djxl can dump the tree if built with debug stuff enabled. Hang on and I'll try it.
username
2024-03-11 08:11:30
there's an old version here: https://discord.com/channels/794206087879852103/824000991891554375/829640351320768522
2024-03-11 08:12:14
don't know if the tree for the final version was ever posted
Qon
2024-03-11 08:21:21
Ok so predictors `AvgW+N,AvgW+NW,AvgN+NW,AvgN+NE: average of two pixel values ` are used for blurry 22.5 degree angles, which are then also a "language supported" angle
2024-03-11 08:23:21
The gradient predictor is pretty much what I do for lines, except it clamps values
2024-03-11 08:24:10
I think
CrushedAsian255
lonjil I believe djxl can dump the tree if built with debug stuff enabled. Hang on and I'll try it.
2024-03-11 08:36:09
What build flag is that?
lonjil
CrushedAsian255 What build flag is that?
2024-03-11 08:36:31
I think I was misremembering
Qon
2024-03-11 08:55:17
https://discord.com/channels/794206087879852103/824000991891554375/829790023481163826 gives me *this* after I fix the RCT to new format (1 -> 6) https://qon.github.io/jxl-art/?zcode=hVLLDoIwELzzFXsnJLQ8hIuJGiInDmrSDwAUbh6I0b93KwVWulUSEmams9OdoPpm6ECEYeiVbX_rhvF73w9Ne0cl806HC6Se11_hBVuIUQRA8ESQfMAHqmOJxAgBAtg9bpVfKfBBWlxgOKetYGyFsaGpRouYJryIH2GFMBAToe0VvuIL-yTw3A4QLWvU39Po8MlLZ2l3kAinwxBSLtRcXpznhLQ6XR6MVeTO69nZWqA92NpcCS_pjZwDo9Btks4sf52FZLFayLE8c5LpQ_9H9rqGjayR3G1Nfp7a5St7gfl8xiytHWy9xpPKjC2KzSG-KObEH3nEKzYJK__MJX6X_Ced9J3QC0y_2Rs
lonjil
2024-03-11 09:16:51
ah, there it was
jonnyawsom3
lonjil I think I was misremembering
2024-03-11 09:31:01
It was either a developer build or a small hack you had to do to the executable. I know there was the Google CTF which needed trees
Xyxen
Qon https://qon.github.io/jxl-art/?zcode=7ZhLT-MwEIDv_hW-V5HG4xk_Lki7XDisEAIkztU2bCOhgiBawb_HgSZ1k1iblC1QyKGSPfHM-DGfx9Pz40sJ4qpYlEtpCMRJXvxZli_Nn0W5yO-CXKH4cXO3nIuTYrHIV8fL-WqV30gtTm_LX_OHUojiWv6WR5KFlJm8yEtJ4Dcd6B0Ymmf3-V8TuhC6jYAbQSOiSNTyEIvqIXFv0167ptrXU-hY1aicyllYUWxAe23qwZWm3kxqS7etXesjE21UKgvYjOja6Fpp7ABArFhZivWC6LGaHvpI2N6TraEKcEvczAfRtD7024mX0P3Se0T_MtiVrpfaWcFTR1jvHbLpruuxZ3ilcBV-aHVivYTG4VDPWbWjNMb1LGhYTPjOtLVsJ2jeARoO-zwQGo3uC0KTSVY4DhpuXTTR4WsFhMN5Hek6KLBKMYOWyU-Z5tNlmgQ02tJYaBD581Az9sKvNEwq2RjlPfFwbnbJNsamyCHvdTimiZx3SDf09nRz2OTMdiLHpchB8Ir9nt9pKeeZQwN6AudAUg6jHQuO7jn7r1DdZJqcM3vFRkGSWYNW0YTNgeSbw8Zmp5eaUqkKx3tWynxMhUMaTCg1J272y81LzHszhJtXPIwYGOcfE81eQSKinPXQuiD-e9nh048nFbZo-pfrO4fzTLqRsZwKJma93yLApFwjOiBoRW9cp63Zca2Yq1vP With gradients 914 Bytes
2024-03-12 03:11:03
Oh wow, that's impressive. I'm sold more and more every day on this format lmao, thank you
username
2024-03-12 03:26:41
off-topic but I was wondering why your name and pfp looked familiar and of course the reason ended up being Source engine related lol
Not any better, but at least not scaled up
2024-03-12 03:33:51
I found the [original JPEG](https://avatars.cloudflare.steamstatic.com/eb1116435009d4d28af1d07cf50ca2d3976b301f_full.jpg) and jpeg2png manages to clean it up pretty nicely
Qon
Xyxen Oh wow, that's impressive. I'm sold more and more every day on this format lmao, thank you
2024-03-12 04:44:30
Glad you like it! Use it as you PFP and that's thanks enough :)
jonnyawsom3
2024-03-13 12:58:59
Yeah, no more jpeg artifacts ;P
yoochan
2024-03-13 08:19:00
about jpeg artifacts, I cloned and compiled https://github.com/victorvde/jpeg2png and it works quite well to clean up messy jpeg. But the last commit is 9yo. Do some other similar project exists ? with better results ?
username
yoochan about jpeg artifacts, I cloned and compiled https://github.com/victorvde/jpeg2png and it works quite well to clean up messy jpeg. But the last commit is 9yo. Do some other similar project exists ? with better results ?
2024-03-13 08:24:54
there's [JPEG Quant Smooth](https://github.com/ilyakurdyukov/jpeg-quantsmooth) but I wouldn't necessarily call the results better just different
yoochan
2024-03-13 08:26:06
Indeed ! it seems a bit less smooth for very flat areas. Anything good exists ith IA ?
Traneptora
yoochan Indeed ! it seems a bit less smooth for very flat areas. Anything good exists ith IA ?
2024-03-13 10:02:57
waifu2x has existed for years. it's a neural net based tool
yoochan
2024-03-13 10:05:54
waifu2x is not only an upscaler ?
2024-03-13 10:06:09
I'll test it
w
2024-03-13 10:15:12
dpir
damian101
username there's [JPEG Quant Smooth](https://github.com/ilyakurdyukov/jpeg-quantsmooth) but I wouldn't necessarily call the results better just different
2024-03-13 11:29:07
perfect for text, line art and anything else with only high contrast content
2024-03-13 11:29:18
probably optimized for PSNR...
_wb_
2024-03-13 04:31:25
Cloudinary's new AI-based cleanup thing might also be good: https://res.cloudinary.com/jon/image/upload/e_gen_restore/f_png,q_100/eb1116435009d4d28af1d07cf50ca2d3976b301f_full.jpg
jonnyawsom3
2024-03-13 04:35:17
<@98957339243073536> we have started something great
fab
_wb_ Cloudinary's new AI-based cleanup thing might also be good: https://res.cloudinary.com/jon/image/upload/e_gen_restore/f_png,q_100/eb1116435009d4d28af1d07cf50ca2d3976b301f_full.jpg
2024-03-13 04:58:53
Good
2024-03-13 05:00:09
The brightness is still a bit better on my Xiaomi mi 11 lite 5G than yt but it has to be tested in an accurate quality
2024-03-13 05:00:41
On yt brightness how i see on my phone I strongly prefer auto cloudinary jpg
2024-03-13 05:00:51
But on tv? On laptop?
jonnyawsom3
2024-03-13 05:11:41
I once again have no idea what you're talking about
fab
2024-03-13 05:17:14
https://youtu.be/YaPzeLMGHTQ?si=9hyPcpez7R_PKtwP
2024-03-13 05:17:28
Ok test video let's cloudinary judge the quality
2024-03-13 05:17:50
Only for This server
2024-03-13 05:35:18
I'm sick of Discord honestly. UI too dark
jonnyawsom3
2024-03-13 05:36:30
Huh...
Xyxen
Yeah, no more jpeg artifacts ;P
2024-03-13 09:21:04
It's been recompressed over the years because I keep losing the file lmao. Finding the original PNG on an old hard drive would be nice but it's not complex enough to warrant the search
username off-topic but I was wondering why your name and pfp looked familiar and of course the reason ended up being Source engine related lol
2024-03-13 09:21:41
A shadow that will always follow me 😔
DZgas Ж
yoochan about jpeg artifacts, I cloned and compiled https://github.com/victorvde/jpeg2png and it works quite well to clean up messy jpeg. But the last commit is 9yo. Do some other similar project exists ? with better results ?
2024-03-15 06:22:45
I use waifu2x caffe — cunet denoise 1 For photo. For art use cunet denoise 3
username there's [JPEG Quant Smooth](https://github.com/ilyakurdyukov/jpeg-quantsmooth) but I wouldn't necessarily call the results better just different
2024-03-15 06:23:30
It will be necessary to do comparative tests.
DZgas Ж I use waifu2x caffe — cunet denoise 1 For photo. For art use cunet denoise 3
2024-03-15 06:25:46
yoochan
DZgas Ж
2024-03-15 08:18:02
amazing results ! I'll have a look
DZgas Ж
yoochan amazing results ! I'll have a look
2024-03-15 10:31:43
waifu2x-caffe cunet (noise3_model) + realcugan-ncnn-vulkan models-se (up2x-no-denoise) I've been using this for a long time to fix lousy compressed art. and if, instead of "cugan", neural networks may have appeared better... but I just don't know how to fix artifacts better than "cunet"... *I don't have any examples at hand other than this, so I'm sorry for the cringe.*
2024-03-15 11:38:19
yoochan
2024-03-15 11:56:06
<@226977230121598977> do you sometime encounter raw material which is not compressed nor scanned? I mean, a manga which is directly produced on a computer, saved as png and distributed as this?
Nyao-chan
DZgas Ж waifu2x-caffe cunet (noise3_model) + realcugan-ncnn-vulkan models-se (up2x-no-denoise) I've been using this for a long time to fix lousy compressed art. and if, instead of "cugan", neural networks may have appeared better... but I just don't know how to fix artifacts better than "cunet"... *I don't have any examples at hand other than this, so I'm sorry for the cringe.*
2024-03-15 12:24:26
2024-03-15 12:25:39
<@1051137277813870592> you could also try real esrgan. I don't remember if it can only denoise though
DZgas Ж
yoochan <@226977230121598977> do you sometime encounter raw material which is not compressed nor scanned? I mean, a manga which is directly produced on a computer, saved as png and distributed as this?
2024-03-15 12:26:00
Yes, I oversaw a project to compress 18,000 units of translated manga hentai (porn) into JXL
Nyao-chan
2024-03-15 12:26:52
and if you need manga like that, like I said before, there is e.g. witch hat Atelier or hunter X Hunter on nyaa
2024-03-15 12:27:30
I tested a few images yesterday and lossless was 30% smaller than lossy vardct/modular on them
DZgas Ж
2024-03-15 12:29:20
I find an algorithm, a mixture of blur, sharpness, medianblur, which destroys the dots. what would it be ok to compress
2024-03-15 12:30:49
That was a year ago. right now, the best solution would be to blur everything to hell harder and then restore sharpness use CUGAN
2024-03-15 12:32:43
now have tools for FFT for sound. but in the case of manga, it would be nice to have something of the same for the image to just destroy the dots as if it were part of the "image spectrum".
yoochan <@226977230121598977> do you sometime encounter raw material which is not compressed nor scanned? I mean, a manga which is directly produced on a computer, saved as png and distributed as this?
2024-03-15 12:36:26
unfortunately, and I DON't understand why - We are still no neural networks for destroying dots in manga. The transfer of points to luma gradient was simply not created. all I advise my friends to do when scaling manga is to use B-Spline - so that when rescaling manga on a monitor or phone screen, interference is minimal
_wb_
2024-03-15 12:37:07
this is for scanned halftoned images that presumably are actually grayscale so the dots are not intentional but an artifact of the printing technology?
Nyao-chan
2024-03-15 12:37:08
like this: https://legacy.imagemagick.org/Usage/fourier/ ?
_wb_
2024-03-15 12:37:37
because I assume in some cases the dots are actually part of the art
w
2024-03-15 12:37:52
yeah these days it's style
DZgas Ж
_wb_ this is for scanned halftoned images that presumably are actually grayscale so the dots are not intentional but an artifact of the printing technology?
2024-03-15 12:38:08
There are no gray colors. Manga printing is a 1 bit color technology
w
2024-03-15 12:38:21
and there is gray
DZgas Ж
2024-03-15 12:39:10
_wb_
2024-03-15 12:40:19
well yes, but either the artist intends to have shades of gray (and the printing technology turns it into some halftone pattern because it can only do 1-bit), or the artist intends to have dots (maybe even larger ones than what the printer resolution would imply)
Nyao-chan
2024-03-15 12:40:57
link with correct anchor: https://legacy.imagemagick.org/Usage/fourier/#noise_removal
DZgas Ж
_wb_ well yes, but either the artist intends to have shades of gray (and the printing technology turns it into some halftone pattern because it can only do 1-bit), or the artist intends to have dots (maybe even larger ones than what the printer resolution would imply)
2024-03-15 12:42:15
Oh, no, of course not, art is originally drawn in a single-bit format, in manga drawing applications,
w
2024-03-15 12:42:37
<:linusretire:707375442226708542>
_wb_
2024-03-15 12:44:51
if the art is 1-bit, why do you want to destroy dots and turn it into smooth gradients?
Nyao-chan
2024-03-15 12:48:16
I guess one problem is moiré?
2024-03-15 12:49:13
I tried to scale manga while changing the dots size one time, using fft, but did not get far lol.
w
2024-03-15 12:50:25
gotta scale in linear
DZgas Ж
_wb_ if the art is 1-bit, why do you want to destroy dots and turn it into smooth gradients?
2024-03-15 12:50:34
due to interference during scaling
Nyao-chan
w gotta scale in linear
2024-03-15 12:52:15
nearest neighbour or integer?
DZgas Ж
_wb_ if the art is 1-bit, why do you want to destroy dots and turn it into smooth gradients?
2024-03-15 12:52:40
the fact is that manga drawn on paper has a huge DPI in terms of quality display, the points in Source arts are exactly those that the printing equipment will print, they are not subject to Discrete conversion, they are actually vector on the final material (paper)
2024-03-15 12:53:29
2024-03-15 12:53:40
the problem
w
2024-03-15 12:54:04
linear light, when not nearest neighbour scaling
2024-03-15 12:58:40
the fact is nobody draws manga on paper in year of our lord 2024
yoochan
DZgas Ж unfortunately, and I DON't understand why - We are still no neural networks for destroying dots in manga. The transfer of points to luma gradient was simply not created. all I advise my friends to do when scaling manga is to use B-Spline - so that when rescaling manga on a monitor or phone screen, interference is minimal
2024-03-15 12:59:49
I like dots in manga, but when scanned (and even worse compressed) they exibit moiré which is very very ugly
w
2024-03-15 01:00:25
they look fine when scanned at high dpi
DZgas Ж
yoochan I like dots in manga, but when scanned (and even worse compressed) they exibit moiré which is very very ugly
2024-03-15 01:02:32
I have a 1200 DPI scanner - it's quite enough to detect every grain of every point..... but there is no hardware (display) to "properly" view the scanned manga.... except for Ebook Reader
Nyao-chan like this: https://legacy.imagemagick.org/Usage/fourier/ ?
2024-03-15 01:04:17
🧐 It looks very smart. added to bookmarks
JXL Art Bot
2024-03-15 01:04:54
**\_wb\_** _“Manga dots”_ 2024 image/jxl 34 bytes https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQMOEKz0wB0oYGBlweqZnpGSUKFgZcoQXFibkFOakKFlxBziEKBlxcmWkKlQp2QBaQ4QdmKCjoKvi5KugawlhGILlwoBxQSFchOLUEyDCAsowA
_wb_
DZgas Ж I have a 1200 DPI scanner - it's quite enough to detect every grain of every point..... but there is no hardware (display) to "properly" view the scanned manga.... except for Ebook Reader
2024-03-15 01:07:44
I guess the main problem you have is that no display has enough resolution to properly view it without downscaling, and for downscaling algorithms it is tricky to avoid moiré / aliasing artifacts
DZgas Ж
_wb_ I guess the main problem you have is that no display has enough resolution to properly view it without downscaling, and for downscaling algorithms it is tricky to avoid moiré / aliasing artifacts
2024-03-15 01:42:32
my friend with a 8k monitor did not understand why I was so bothering <:PepeOK:805388754545934396> the best solution is an Ebook Reader or, if you have a 1000+ ppi printer, just REprint the manga on paper
2024-03-15 01:43:16
But 95% of people who don't have this read manga on their smartphones - that's where all the problems come from.
_wb_
2024-03-15 01:47:15
To do downscaling without Moiré, best in my experience is to first do a Gaussian blur with a radius of half a downscaled pixel (so if you go from 20000 pixels wide to 1000 pixels wide, 1 downscaled pixel corresponds to 20x20 original pixels and you'd do a Gaussian blur with a radius of 10 pixels), and then do a simple pixel area downscale (INTER_AREA in OpenCV terms).
2024-03-15 01:48:36
So manga reader software should probably do that and not some default bicubic or lanczos or whatever
damian101
2024-03-15 01:54:51
that gaussian blur is generally very effective at preventing all kinds of haloing
2024-03-15 01:54:58
always beneficial really in my testing
DZgas Ж
DZgas Ж I find an algorithm, a mixture of blur, sharpness, medianblur, which destroys the dots. what would it be ok to compress
2024-03-15 02:02:19
<@794205442175402004>that i do
Nyao-chan like this: https://legacy.imagemagick.org/Usage/fourier/ ?
2024-03-15 09:46:11
its just works
2024-03-15 10:14:11
2024-03-15 10:16:08
<@251147778313551872> the method is working. but it has so many artifacts that it cannot be used... In addition, it is completely manual, no automatic processing... It's a pity that it turned out to be just a funny thing.
2024-03-15 10:26:43
fun blur
2024-03-15 10:27:24
literally neural network generation
perk
DZgas Ж fun blur
2024-03-25 03:23:06
<#806898911091753051> https://openmodeldb.info/models/4x-DWTP-ds-esrgan-5
DZgas Ж
perk <#806898911091753051> https://openmodeldb.info/models/4x-DWTP-ds-esrgan-5
2024-03-25 03:59:00
<:monkaMega:809252622900789269> no way
2024-04-26 12:35:52
in what way is it possible to draw an image of 31x17 pixels using JXL under the condition that the image information is only the brightness of a specific line to visualize the mask of my image search algorithm. (exclusively for visualization) because I have to store it in JPEG or WEBP images of a large size. Although the actual amount of hash information is 48 bytes
2024-04-26 12:38:23
I'm not asking to do this, I'm just wondering if it's possible to implement it, since 17x and 31x masks should be superimposed with subtraction (mask difference) on the image in 50/50 percentages
_wb_
2024-04-26 12:40:25
so you have a base image B and then a layer H consisting of 17 horizontal stripes and another layer V consisting of 31 vertical stripes?
DZgas Ж
_wb_ so you have a base image B and then a layer H consisting of 17 horizontal stripes and another layer V consisting of 31 vertical stripes?
2024-04-26 12:41:24
there are only images of stripes. A combined image is made from their difference
_wb_
2024-04-26 12:41:49
ok
DZgas Ж
2024-04-26 12:42:29
Since these are 2 prime numbers, the image size should be 527x527 pixels when multiplied.
_wb_
2024-04-26 12:42:59
wait I don't understand
DZgas Ж
2024-04-26 12:43:12
🙂
2024-04-26 12:44:01
2024-04-26 12:44:21
overlap by difference
_wb_
2024-04-26 12:44:50
that's a 31x17 image though
2024-04-26 12:45:06
how do you get a 527x527 image?
DZgas Ж
2024-04-26 12:45:33
31x17=527
2024-04-26 12:46:01
you cannot place a 31x image in a 17x field
2024-04-26 12:46:39
overlap 50% x 50%
_wb_ that's a 31x17 image though
2024-04-26 12:48:09
the number of lines in one image is 17 in the other 31. technically One-dimensional. but one is usr for the height and the other for the width
_wb_
2024-04-26 12:50:09
ah, you're using 527x527 just so you can have 17 macro-lines and 31 macro-columns, so to speak
DZgas Ж
_wb_ ah, you're using 527x527 just so you can have 17 macro-lines and 31 macro-columns, so to speak
2024-04-26 12:50:53
so that perfectly precisely observed in all proportions
_wb_
2024-04-26 12:52:00
so these stripe layers are easy to do in jxl art, just a tree of the form `if x > 16 if x > 33 if x > 50 .... - Set [value of 3rd stripe] - Set [value of 2nd stripe] - Set [value of 1st stripe]`
2024-04-26 12:52:40
(or using y and steps of 31 for the other one)
DZgas Ж
_wb_ so these stripe layers are easy to do in jxl art, just a tree of the form `if x > 16 if x > 33 if x > 50 .... - Set [value of 3rd stripe] - Set [value of 2nd stripe] - Set [value of 1st stripe]`
2024-04-26 12:53:48
please don't write examples. I don't understand JXL art at all. 🥴 I'm just wondering if it's possible to draw or not 31. and then draw lines 17 on top of them so that there is a pixel difference in place of the drawn lines 31
_wb_
2024-04-26 12:54:25
blending them can be done using one of the blend modes jxl supports. It doesn't have difference, but I guess you can use kAdd and encode the layer with all values having a negative sign instead of a positive
2024-04-26 12:54:40
what kind of "pixel difference" do you need?
2024-04-26 12:54:54
is it just A-B or do you need abs(A-B)?
DZgas Ж
2024-04-26 12:55:17
yep
2024-04-26 12:55:22
abs(A-B)
_wb_
2024-04-26 12:56:05
that is maybe trickier
2024-04-26 12:59:20
an easier and maybe more informative way to visualize this is to put the horizontal stripes in one channel (e.g. Red) and the vertical ones in another (e.g. Green)...
2024-04-26 01:07:26
something like this
2024-04-26 01:07:27
https://qon.github.io/jxl-art/?zcode=rZG9bsIwFIV3P8WdERXXdpyYhYEundtKnVFjiBeChJHK2-M_7CR2N7Z7zrFv4vP96N4MIFhHPpQ-DcaPe216dbG-JJ_v34CE6CP8ws5OAHa825G7OamWepX0lkWdHMp4srIpmomZbSlmdgoYbRdBjpquiHLYyUoIsFnB4dzDdYTxvIb7eIOTMmAGBbpXB1htqrfe4Muemj9omda-FxIWm6ts3C6T4M_d4DWMFItFbi3-xPNm3C-CjgojzT_XePuk6RTnmabTAqc0ndN2c5jOkwVLvxlpydIHVNZY-ogL8hpY4akC_43Kzuutp5KbGg0qscAxORiv4gIHTnEgeQA
2024-04-26 01:09:54
(you can also try other RCTs to spice up the colors a bit)
DZgas Ж
2024-04-26 02:20:09
I get the idea
a goat
2024-04-26 02:49:40
All those branches... how does the encoder optimize this for parallel execution?
_wb_
2024-04-26 08:59:53
That's where things get tricky. We already do stuff to reduce branching in the decode paths, but there is room for some more.
Meow
2024-05-12 01:28:31
Some can't displayed on Safari https://jpegxl.info/art/
jonnyawsom3
2024-05-12 01:34:55
If I recall there's a minimum filesize for images to display, and JXL is the only time it's managed to make images under that minimum
Meow
If I recall there's a minimum filesize for images to display, and JXL is the only time it's managed to make images under that minimum
2024-05-12 01:36:43
The 73B one is displayed but the 81B one isn't
jonnyawsom3
2024-05-12 01:36:57
Huh... Well that's new
monad
2024-05-12 01:46:18
maybe rejecting the spline
2024-05-12 01:48:31
current libjxl even rejects some old arts.
_wb_
2024-05-12 01:48:38
this tells us something about which version of libjxl they're using, I guess 🙂
2024-05-12 01:48:51
originally splines had no limits, and libjxl would just decode anything
monad
2024-05-12 01:49:08
well current libjxl decodes this one
_wb_
2024-05-12 01:49:33
then we added limits because fuzzers were finding examples where decode would take lots of time and resources — these limits were first added in a somewhat unprincipled way, just as a security mitigation
2024-05-12 01:50:43
then we updated the spec to actually define rigorous and well-defined limits for splines (in both levels of the Main profile, at least), and made libjxl use those limits instead
2024-05-12 01:51:30
'Rubin golden vase' originally decoded, then didn't decode anymore, then decodes again — it was one of the examples I wanted to remain within the spec limits 🙂
2024-05-12 01:52:11
so likely in a future update of Safari/macOS/iOS the image will decode again
jonnyawsom3
2024-05-12 02:11:37
Interesting
monad
2024-05-12 02:22:00
encode_decode
jonnyawsom3
2024-05-12 02:25:03
Maybe to do with the RCT numbers being changed?
monad
2024-05-12 02:25:29
yes, as far as the color issue
2024-05-12 02:25:43
but the shape changed too
_wb_
2024-05-12 04:32:06
Looks like some scaling factor changed in jxl_from_tree output. The important thing is that the same jxl file decodes to the same image. But probably useful to figure out what changed there and make jxl_from_tree consistent with older versions again.
NewFeverish
TheBigBadBoy - 𝙸𝚛 Recompressed with `-d 1 -e 9`, cjxl v0.9.2 41b8cdab did not appreciate that <:KekDog:805390049033191445>
2024-05-30 09:05:40
he has a little fez now 😂
_wb_
2024-05-30 09:35:46
Sierpinski: https://discord.com/channels/794206087879852103/824000991891554375/844164924527476757 XOR: https://discord.com/channels/794206087879852103/824000991891554375/926163221776314380
2024-05-30 09:36:06
<@1135670115808059512>
NewFeverish
2024-05-30 09:36:31
oooh, I love this, thanks
TheBigBadBoy - 𝙸𝚛
_wb_ Sierpinski: https://discord.com/channels/794206087879852103/824000991891554375/844164924527476757 XOR: https://discord.com/channels/794206087879852103/824000991891554375/926163221776314380
2024-05-30 11:11:12
what about pinning them? so we can find them again easily
JXL Art Bot
2024-05-30 11:41:44
**NewFeverish** _“Sierpiński Gradient”_ 2024 image/jxl 25 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTg4spMUwjX9QtXsFMw4FJQAPL8gFwoT0FBVyFcwRDKcixLD9cGqgTJ6CoEp%2BakJpcAJQE%3D
NewFeverish
2024-05-30 11:43:30
It looks pretty cool using other RCT vals too
JXL Art Bot
2024-05-30 11:45:40
**NewFeverish** _“Frozen Sierpiński”_ 2024 image/jxl 27 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCnIOUTDl4spMUwjX9QtXsFMw4FJQAPL8gFwoT0FBVyFcwRDKcixLD9cGqgTJ6CoEp%2BakJpcAJQE%3D
NewFeverish
2024-05-31 10:24:35
Is there any way to get the jxl prediction tree to generate images bigger than 1024x1024?
2024-05-31 10:33:10
would be sick to be able to make desktop backgrounds using prediction tree art
jonnyawsom3
2024-05-31 11:24:47
1024x1024 is the max size per tree, but you can tile the trees into 2048x2048, 4096x4096, 8192x8192, ect
2024-05-31 11:27:06
Actually, I lied
2024-05-31 11:27:49
Adding `Upsample #` as 2, 4 or 8 will do what I said above, but actually scaling the image instead of just tiling
NewFeverish
2024-05-31 11:39:52
thanks, I was running into tiling like you mentioned. Playing with the Upsample value seems to expand the image properly, though I noticed it starts to blend colors together
jonnyawsom3
2024-05-31 11:42:40
That'll be because of the upsampling mode, there's a flag in cjxl to use nearest neibhour but it's not in the art tools yet
NewFeverish
2024-05-31 11:47:12
fair enough, so I could theoretically break out the hex editor and add the flag into the image myself?
2024-05-31 11:55:24
maybe that or start helping out with the art tools repo. I appreciate the help so far, kind of fun to abuse a feature of image compression to do things like this
monad
NewFeverish fair enough, so I could theoretically break out the hex editor and add the flag into the image myself?
2024-06-01 06:49:32
you would have to embed your upsampling weights into the codestream, idk if editing an existing file is allowed. anyway, it takes a lot of bytes relative to the tiniest jxl art
NewFeverish
2024-06-01 07:51:16
dang, probably not viable then to do it via text editor. Thanks for the input and I can look at the art tools if I have time
lonjil
2024-06-01 08:18:24
One of these days I'm gonna make a visual JXL codestream editor
CrushedAsian255
lonjil One of these days I'm gonna make a visual JXL codestream editor
2024-06-02 05:40:40
i'm trying to write a parser but i'm still not sure what spec I should go by as there seem to be multiple specs
monad
2024-06-02 05:42:13
the latest one
CrushedAsian255
2024-06-02 06:11:16
can u link?
lonjil
CrushedAsian255 i'm trying to write a parser but i'm still not sure what spec I should go by as there seem to be multiple specs
2024-06-02 06:30:53
https://discord.com/channels/794206087879852103/1021189485960114198/1169087534060556339
CrushedAsian255
lonjil https://discord.com/channels/794206087879852103/1021189485960114198/1169087534060556339
2024-06-02 06:33:44
that's the official one?
lonjil
2024-06-02 06:34:34
It's the latest one Jon has posted. I don't think there have been any notable changes since then.
CrushedAsian255
lonjil It's the latest one Jon has posted. I don't think there have been any notable changes since then.
2024-06-02 06:35:05
ok thanks
2024-06-02 06:37:42
When it says ```A bitstream is a sequence of bytes. A codestream is a bitstream that represent compressed image data and metadata. N bytes can also be viewed as 8 × N bits. The first 8 bits are the bits constituting the first byte, in least to most significant order, the next eight bits (again in least to most significant order) constitute the second byte, and so on. Unless otherwise specified, bits are read from the codestream as specified in B.2.1.``` does this mean the bytes `00101111 01010101` would be read `1-1-1-1-0-1-0-0-1-0-1-0-1-0-1-0`? is this correct interpreted?
Tirr
2024-06-02 06:40:33
yep
2024-06-02 06:42:37
so it allows reading e.g. 8 bytes at once and process from LSB in little endian system
CrushedAsian255
2024-06-02 06:44:34
that's clever, so i can just load a u64 and just do ```cpp uint64_t x = read_8_bytes_from_file(); for(int i = 0; i < 64; i++) { printf("%d\n",x&0x1); x >>= 1; } ```
Tirr
2024-06-02 06:45:14
yeah something like that
2024-06-02 06:46:15
there are some tricks to read bits much faster (which libjxl uses)
CrushedAsian255
2024-06-02 06:46:48
are the bits in the code stream read in the other order again then?
2024-06-02 06:47:53
so like if i needed to read 4 u1's and a u4 from `01110101` i would get `1 0 1 0 0111`?
2024-06-02 06:48:20
like `x &= 0xf; x >>= 4;`?
Tirr
2024-06-02 06:51:55
yeah exactly
CrushedAsian255
2024-06-02 06:52:08
that's really clever
Tirr
2024-06-02 06:53:05
it's a bit confusing (at least for me), but very natural to computers
CrushedAsian255
2024-06-02 06:53:12
this is probably the wrong channel, lets go to my old thread
2024-06-02 06:53:22
https://discord.com/channels/794206087879852103/1208362658705838090
Qon
_wb_ https://qon.github.io/jxl-art/?zcode=rZG9bsIwFIV3P8WdERXXdpyYhYEundtKnVFjiBeChJHK2-M_7CR2N7Z7zrFv4vP96N4MIFhHPpQ-DcaPe216dbG-JJ_v34CE6CP8ws5OAHa825G7OamWepX0lkWdHMp4srIpmomZbSlmdgoYbRdBjpquiHLYyUoIsFnB4dzDdYTxvIb7eIOTMmAGBbpXB1htqrfe4Muemj9omda-FxIWm6ts3C6T4M_d4DWMFItFbi3-xPNm3C-CjgojzT_XePuk6RTnmabTAqc0ndN2c5jOkwVLvxlpydIHVNZY-ogL8hpY4akC_43Kzuutp5KbGg0qscAxORiv4gIHTnEgeQA
2024-06-04 08:20:41
Cool, someone other than me used my fork <:BlobYay:806132268186861619> thanks! :D
lonjil
2024-06-04 08:28:24
I haven't done jxl art for a while but when I do in the future I will definitely use your fork
Qon
lonjil I haven't done jxl art for a while but when I do in the future I will definitely use your fork
2024-06-04 08:33:15
Thanks! And maybe I'll get back to trying to clean up the way ace-editor was included (to the proper but currently non-working way) so that others will accept my PRs.
_wb_
Qon Cool, someone other than me used my fork <:BlobYay:806132268186861619> thanks! :D
2024-06-08 01:47:18
I like it on desktop. On my phone, not so much...
JXL Art Bot
2024-06-08 02:14:15
**\_wb\_** _“Painting with light”_ 2024 image/jxl 31 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTDgcsosSUktKMlQMDTg4spMU0hWsAOKKigAmQFFqWWuRUVQAQUFXQW%2FcAVdIyjbsSw9XNtPwRCiNlwXKGenoGsIlgUK%2BAFFEAIgDeEKCDbIIEOoQcGpOanJJUBJAA%3D%3D
lonjil
2024-06-08 02:15:21
ooo
_wb_
2024-06-08 03:17:46
I like how those green and blue diagonal strokes look kind of natural (like someone used a blurry brush in Gimp or something), which was something I was not expecting
2024-06-08 03:18:25
(considering the simplicity of this tree)
JXL Art Bot
2024-06-08 04:47:32
**Jonnyawsom3** _“New Wallpaper”_ 2024 image/jxl 51 bytes https://jxl-art.lucaversari.it/?zcode=RYzLCsIwEEX38xV3L4GkqOimoEVwFcQHs5Z2bAMVQgz9fqca6O5wzsy9Nnfs6BhyJzEPcJY4dAr7raWzhH7I2KwtPeLn%2BY6joCIKL7SoYQlQvCSZTikVARh4hqkKH6aeVx7uf8tGWw3jflWFV7OI%2BYGx8DzkytBNRmmzxi8%3D
jonnyawsom3
2024-06-08 04:47:57
Always fun playing with the RCT
Meow
2024-06-09 06:52:44
Readable
Qon
_wb_ I like it on desktop. On my phone, not so much...
2024-06-09 06:45:06
Because of vertical split? Making the layout adjust to screen aspect ratio seems sensible. I just would never actually edit any jxl-art on my phone, so I don't need space for a keyboard. And without the need to accommodate the screen space used for a touch keyboard the use case is just viewing. And if I wanted to view some jxl-art on my phone I would hold my phone in landscape mode for the vertical split anyways. And maybe even with a horizontal split since the code area is adjustable anyways.
_wb_
2024-06-09 06:47:55
Yes, it would be nice to change the split direction depending on screen orientation. I don't really like landscape mode on phone (in terms of ergonomics)
Qon
_wb_ Yes, it would be nice to change the split direction depending on screen orientation. I don't really like landscape mode on phone (in terms of ergonomics)
2024-06-09 07:13:08
The ergonomics of holding the phone that way? Or having to change back and forth because of using portrait for discord and landscape when clicking a link to view jxl-art? Or the constant switching keyboard on/off to be able to see the screen when keyboard covers the webpage?
_wb_
2024-06-09 07:48:03
All of those, but mostly the first and last.
JXL Art Bot
2024-06-18 05:07:01
**NewFeverish** _“Fadeout Sierpiński”_ 2024 image/jxl 25 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTg4spMUwjX9QtXsFMw4FJQAPL8gFwgzxDIU1DQVQiHsxzL0sO1gSpB6nQVglNzUpNLgJIA
NewFeverish
2024-06-18 05:08:20
A little bit different than "Sierpiński Gradient", where this time the gradient is facing up and to the right
lonjil
2024-06-18 10:05:02
neat
_wb_
2024-07-28 05:52:11
we should add some syntax to jxl_from_tree to signal it's PQ instead of sRGB, so we can make some HDR jxl art
2024-07-28 08:51:06
Wide gamut & HDR version of a sunset
embed
2024-07-28 08:51:19
TheBigBadBoy - 𝙸𝚛
_wb_ Wide gamut & HDR version of a sunset
2024-07-29 06:36:38
only 121 bytes for this beautifful image ??? [⠀](https://cdn.discordapp.com/emojis/853492103145324554.webp?size=48&quality=lossless&name=woag)
jonnyawsom3
2024-07-29 06:46:54
Color management can certainly change the demeanour of an image, very nice shades of blue at the top (Waterfox)
_wb_
2024-07-29 07:20:23
best viewed in Thorium on a recent macbook (or anything else with a good HDR display) 🙂
Quackdoc
2024-07-29 07:37:20
I don't have amd setup right now and am on linux so I can't view T.T
jonnyawsom3
2024-07-29 08:31:01
My 8 year old phone is the only HDR device I own, and I don't think any of the gallery apps currently support HDR
Tirr
2024-07-29 08:41:51
tried tonemapping to sRGB with jxl-oxide and seems like it overflowed
2024-07-29 08:44:24
it was totally ok when decoded to bt2100 pq
SwollowChewingGum
2024-07-29 10:25:42
some weird glitchiness happening on thorium
2024-07-29 10:25:59
Tirr
2024-07-29 10:35:26
I think it's fixed; artifacts seem to be from extremely out-of-gamut input
2024-07-29 10:37:26
it should be allowed to clip input to [0, 1] because the input rendering intent is Relative, but not sure
2024-07-29 10:51:11
macOS (left) and jxl-oxide (right) tonemap a bit differently
2024-07-29 10:52:46
jxl-oxide looks better to me 😉
𐑛𐑦𐑕𐑣𐑸𐑥𐑩𐑯𐑦 | 最不調和の伝播者 | 異議の元素
2024-07-29 12:05:43
« L’application ne répond plus »
_wb_ Wide gamut & HDR version of a sunset
2024-07-29 12:07:26
Loupe (not sure about the underlying implementation)
Quackdoc
2024-07-29 12:10:30
loupe uses JXL oxide iirc
Tirr
2024-07-29 12:10:58
maybe jxl-oxide with external cms
2024-07-29 12:16:49
seems like they're using jpegxl-rs, which means libjxl
Quackdoc
2024-07-29 12:22:33
interesting, I think it used jxl-oxide at one point, or maybe im mistaken with another viewer, could be crossing wires with occulante
Tirr
2024-07-29 12:29:26
it did used jxl-oxide but switched to libjxl mainly because of performance and some remaining bugs
Quackdoc
2024-07-29 01:30:33
ahh I see
_wb_
2024-07-30 10:13:55
I like the way this looks in Thorium
2024-07-30 10:14:43
The Adobe Lightroom rendering is different, still OK but I guess it behaves differently for out-of-range values
jonnyawsom3
2024-07-30 11:54:54
Almost looks like a signature in the bottom right
_wb_
2024-07-30 12:08:24
https://github.com/libjxl/libjxl/pull/3728
Almost looks like a signature in the bottom right
2024-07-30 12:10:36
it's the short version of my signature, my initials JS
Tirr
**Tirr** _“Sun within the Level 5 limits”_ 2024 image/jxl 61 bytes https://jxl-art.lucaversari.it/?zcode=i4h04gpyDlEw4HLKLElJLSjJUDA04ArPTAEyTA2NuDxSM9MzSsBMruCCnMy8VC4jBQNKIJehkQWFJlgYUOoEM0pNAAYIkDY1NFAw4nLNS4EGDVdmmkKygh1QXkEByjQEMnUVglNLFIxMDeBsXUsDLgjL0sAAAA%3D%3D
2024-07-30 12:11:24
time to remake this
jonnyawsom3
_wb_ it's the short version of my signature, my initials JS
2024-07-30 12:12:01
Ahh, on my display it blended into the background somewhat, I see it now
_wb_
2024-07-30 12:13:33
I could have made it some bright neon color for some extra HDR effect, but I didn't want it to distract from the actual 'painting' 🙂
embed
2024-08-04 03:06:06
"Unexpected node type: This\n"
TPS
2024-08-04 03:11:04
Is there a corresponding `jxl_to_tree`?
CrushedAsian255
TPS Is there a corresponding `jxl_to_tree`?
2024-08-04 03:53:08
i've been wanting something similar, apparently it existed in an old version of benchmark_xl?
jonnyawsom3
2024-08-04 11:56:39
There was some info here about reverse engineering JXL files https://github.com/google/google-ctf/tree/main/2023/quals/rev-jxl/solution
CrushedAsian255
There was some info here about reverse engineering JXL files https://github.com/google/google-ctf/tree/main/2023/quals/rev-jxl/solution
2024-08-04 12:10:24
looks like coold advertising for the format
TPS
There was some info here about reverse engineering JXL files https://github.com/google/google-ctf/tree/main/2023/quals/rev-jxl/solution
2024-08-04 04:38:38
That's interesting. I'll have to read more into that.
TPS Is there a corresponding `jxl_to_tree`?
2024-08-04 04:41:33
Alternatively, since [AllRGB.com](https://AllRGB.com) has been mentioned before, has anyone looked into recreating any of the high-compressed images there using `tree_to_jxl`?
Tirr
2024-08-15 03:36:46
jxl-oxide fuzzer playing around with jxl art
2024-08-15 03:37:18
(decoded by libjxl, jxl-oxide seems to have a bug with upsampling+spline)
Traneptora
2024-08-16 12:39:10
thanks for helping me test jxlatte bugs
DrDesten
TPS Alternatively, since [AllRGB.com](https://AllRGB.com) has been mentioned before, has anyone looked into recreating any of the high-compressed images there using `tree_to_jxl`?
2024-08-17 01:44:45
The webapp seems to max out at 2048x2048 resolution, does anyone know a workaround? I need 4 times as many pixels to make it to 16777216
_wb_
2024-08-17 03:45:17
Best to use jxl_from_tree locally for larger images. I dunno why the web version runs out of memory, might be you just cannot allocate very much from js
DrDesten
2024-08-17 04:44:45
Where can I find documentation on jxl_from_tree?
_wb_
2024-08-18 05:40:55
The web app is based on it, so you just put your tree in a text file
CrushedAsian255
_wb_ I like the way this looks in Thorium
2024-08-18 05:45:27
macOS is still having issues rendering it
2024-08-18 05:45:32
gb82
2024-08-23 03:03:17
preview fails with it for me
CrushedAsian255
gb82 preview fails with it for me
2024-08-23 03:08:05
same
JXL Art Bot
2024-08-28 07:29:56
**\_wb\_** _“Barfing Chips”_ 2024 image/jxl 45 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTBS4HLKLElJLSjJUDDmCi0oTswtyElVMOLiykxTCNf20%2FULV7BTMOBSUNBVcCxLB4oo6JqCee5FiSmZqXklCmZcAA%3D%3D
2024-08-29 12:02:00
**CrushedAsian255** _“Stage Spotlight”_ 2024 image/jxl 38 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQsODiykxTqFSwU7AwMOBSUIBzDIEcBQVdBT8FXSMwEyiTDJSBiINkglNLFIzAmhB8Q5ghfiClUEldhXAgNoUZ6KqgrWDEBQA%3D
CrushedAsian255
2024-08-29 12:02:44
first time really attempting JXL art
Meow
**\_wb\_** _“Barfing Chips”_ 2024 image/jxl 45 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTBS4HLKLElJLSjJUDDmCi0oTswtyElVMOLiykxTCNf20%2FULV7BTMOBSUNBVcCxLB4oo6JqCee5FiSmZqXklCmZcAA%3D%3D
2024-08-30 11:50:32
Expanded version of 🤮
Fox Wizard
2024-08-30 11:56:19
Thanks, can't unsee that anymore now <:KekDog:884736660376535040>
_wb_
2024-08-30 01:05:07
If you zoom in you can see it's something like RAM chips etc that is being barfed
Meow
2024-08-30 01:48:09
Techno-vomiting
JXL Art Bot
2024-09-01 12:36:52
**\_wb\_** _“Irregular diagonal lines”_ 2024 image/jxl 31 bytes https://jxl-art.lucaversari.it/?zcode=C3IOUTDgcsosSUktKMlQMOZyK0rMTQ3IL1YwUNA1NzDg4uLKTFMI1%2FbT9QtXsFMw51JQ0FXwc1XQNQaz3IsSUzJT80oUTLgA
CrushedAsian255
2024-09-01 12:39:31
Kinda looks like rain
Meow
2024-09-01 02:24:54
Hair via a microscope
CrushedAsian255
2024-09-01 03:12:08
Vinyl record grooves?
NuCrow
2024-09-01 04:32:21
How does the "Select" predictor work?
JXL Art Bot
2024-09-01 05:31:29
**Anonymous** _“Completely Bonkers”_ 2024 image/jxl 70 bytes https://jxl-art.surma.technology/?zcode=VY%2B9CgIxEIT7fYrpZSHZ835sLATRKggWeQCNeJ1IOPTtTXJZPbuZyXw7ZDfGa3jEOwai8YYXtrCEpPzhmPXGmI7AcOC%2FXBpb4j36El9SaAhZnp5hSk6yLQQ7X1%2BREA9uvlI7LgNWK%2Bkq950anyd%2B07KuTN1pF4cXWkjpPJfq7%2FlrumaNIcVkqGWs5phxDhHSth8%3D
_wb_
NuCrow How does the "Select" predictor work?
2024-09-01 06:38:47
It's defined like this: `abs(N − NW) < abs(W − NW) ? W : N`
2024-09-01 06:42:58
It's from lossless webp
JXL Art Bot
2024-09-01 08:17:47
**\_wb\_** _“Yet another phone wallpaper”_ 2024 image/jxl 51 bytes https://jxl-art.lucaversari.it/?zcode=Lcq7CsJAEIXhfp7i9DKwq5GkEjSFVkG8sHVwx2QgyhKHPL8jWB2%2Bw39pb4h0UMtSbERNSbPvug50Eh1GQ9UEupdP%2FyqToCLSJ9Kq4y5hB24I8OM8y%2BIMLoCxXwZPwPHvq0zyMPCWfjrOfVZ5GzaRvg%3D%3D
NuCrow
_wb_ It's defined like this: `abs(N − NW) < abs(W − NW) ? W : N`
2024-09-01 11:10:25
Thank you!
JXL Art Bot
2024-09-06 05:14:12
**CrushedAsian255** _“RayBeams”_ 2024 image/jxl 43 bytes https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKz0wB0qaGRlweqZnpGSVgZpBzCFCKKzNNwU%2FBTsHQxIRLQUFXwc9VQdfQAMgEioeDxC2NgBwwN6AotQwkYmQBFgGpdixLd8zJgeqAKksGqoFxQWqCU3NSk0sUdE2RxMIVDLmwKNdVcC9KTMlMzQO6EGFgJZqBcDXIgn4K2oYA
2024-09-06 05:19:47
**CrushedAsian255** _“RayBeams 2”_ 2024 image/jxl 42 bytes https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQsOAKz0wB0qaGRlweqZnpGSVgZpBziIKhGRdXZpqCn4KdgqGJCZeCgq6Cn6uCrjGQBRQOBwlbGgE5YG5AUWoZSMTIAiwCUuxYlu6Yk6Oga2gAFQIqSwaqgXFBasKB0ihcQy4sKnUV3IsSUzJT84COQ5hViWYWXA2yoJ%2BCtiEA
2024-09-06 04:24:10
**dogelition** _“Flag of Austria”_ 2024 image/jxl 41 bytes https://jxl-art.surma.technology/?zcode=c8osSUktKMlQsOAKz0wB0pYGBlweqZnpGSUKZkAmV2aaQqWCnYKhpSWXggKUYwzmgLnJQK4BmAPnGkK5Cgq6CsGpJQomZmgChjABCNfIAGIAlGdqyoVmMpq5aKaimIkwEQA%3D
lonjil
2024-09-06 04:36:35
Nice
JXL Art Bot
2024-09-06 05:50:43
**\_wb\_** _“Approximate Flag of Austria”_ 2024 image/jxl 37 bytes https://jxl-art.lucaversari.it/?zcode=c8osSUktKMlQMDTgCs9MATIsLS25PFIz0zNKFMzMzLi4XFJzShIDEnNSS0pSubgy0xQqFOzAMroKwaklCrqGYMFKoKCRkSGXggKUY2JiDOQoKEBUmZkjcQwtLLiQJAA%3D
2024-09-06 06:31:50
**spider-mario** _“Swiss Flag”_ 2024 image/jxl 102 bytes https://jxl-art.surma.technology/?zcode=zZIxEgIhDEV7TpELOBNUXLaxsLK38AAuunQWFHp7dxE0gWCpVvBD5v83CTsfBncNI1h19MN09htUe%2BcvY4hX5c9why1oiwogiS6KKE%2BTfIqX1EkCLODgAixtUVjnjvSubXabzU1H%2FG6sUCWKqWKykF4TkNBVj3WbMXUusggRpoEjAtVIaSwUKDHmNXyXhwBoi1IrG1MDrInWhGvgfdgh%2FTg%2FmQ%2F%2FRP8wH5ZVJBS%2BzO3t8QA%3D
spider-mario
**\_wb\_** _“Swiss flag”_ 2021 image/jxl 55 bytes https://jxl-art.surma.technology/?zcode=fU4rEoAgFOycYi%2FgDG%2F8jMlgshs8gKDSDAS9vegIIoKJ%2FbFvW6WFXPUCYoMS5q05Z51U86IvyNSEEQ04AwzcDaTyJI5WNwUy9FLDMmNvLzsMuAh5EScWdeGJ7loof0tf8ZyqwLAfKKHz8OoWrYmXJEemZv4OTU%2BN1fnKg23DAQ%3D%3D
2024-09-06 06:33:59
oops, there is already a previous entry for that
2024-09-06 06:34:16
smaller, too (but a different shade of red)
yoochan
2024-09-06 06:35:12
you can make a "savoie" flag instead
spider-mario
2024-09-06 06:35:21
salut, savoie ?
2024-09-06 06:35:25
(sorry)
JXL Art Bot
2024-09-06 06:35:42
**\_wb\_** _“My phone wallpaper”_ 2024 image/jxl 29 bytes https://jxl-art.lucaversari.it/?zcode=43JJzSlJDEjMSS0pSeUKz0wpyVAwMTDl8kjNTM8oUbA0MOAKLShOzC3ISVUw5OLKTFMI1%2FbT9QtXsFMw4FJQ0FVwLEsHiijoGpmDue5FiSmZqXklQMUA
spider-mario
spider-mario smaller, too (but a different shade of red)
2024-09-06 06:36:56
as far as I understand, both shades of red are legal: https://www.fedlex.admin.ch/eli/cc/2015/613/en#annex_2/lvl_u1
2024-09-06 06:37:34
<@794205442175402004>’s is “RGB 255 / 0 / 0” whereas I went for “Pantone 485 C”
2024-09-06 06:37:45
(I googled the sRGB values for that)
dogelition
**\_wb\_** _“My phone wallpaper”_ 2024 image/jxl 29 bytes https://jxl-art.lucaversari.it/?zcode=43JJzSlJDEjMSS0pSeUKz0wpyVAwMTDl8kjNTM8oUbA0MOAKLShOzC3ISVUw5OLKTFMI1%2FbT9QtXsFMw4FJQ0FVwLEsHiijoGpmDue5FiSmZqXklQMUA
2024-09-06 06:41:57
playing around with the `Gradient` value (i just tried 1 - 10) produces some very interesting results
yoochan
spider-mario salut, savoie ?
2024-09-06 06:42:24
the country of the croziflette ! so you can recycle your swiss flag and make a new one nobody made yet 😄
JXL Art Bot
2024-09-06 06:57:04
**\_wb\_** _“Unpredictability”_ 2024 image/jxl 51 bytes https://jxl-art.lucaversari.it/?zcode=43JJzSlJDEjMSS0pSeUKz0wpyVAwMjCx4PJIzUzPKIGwuTLTFMK1%2FXT9whXsFAy4FBR0FRzL0oEiCrpGBmDZdKCEkSGcZQRnGYNVuxclpmSm5pUomKByzVC5RqhcCy4A
2024-09-06 07:24:44
**dogelition** _“Chromatic Stripes”_ 2024 image/jxl 22 bytes https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5QrPTCnJUDA1NOLySM1MzygBM7l0FfwUdI2MuQA%3D
jonnyawsom3
2024-09-06 09:43:12
Reminds me of this
lonjil
2024-09-06 09:53:08
the publish button isn't working so I guess I have to do this manually
2024-09-06 09:53:25
**Lonnie** "*Some fucked up shit idk*" 2024 image/jxl 29 bytes https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5QrPTCnJUDA1NOLySM1MzygBM7mcMktSUguAEoZcXJlpCuG6fuEKdgq6hlwKCkCuH5AP4yoo6CqEK8BYQGUGXCBGcGpOanIJUBwA
2024-09-06 10:07:05
Alternatively, at a higher bit depth
2024-09-06 10:07:20
without looking at the code, guess what I did
2024-09-06 10:17:46
one small change and
2024-09-06 10:23:58
one more small change and
dogelition
lonjil the publish button isn't working so I guess I have to do this manually
2024-09-07 02:39:06
it didn't work for me in firefox (maybe because of enhanced tracking protection? idk), but it worked in chrome
jonnyawsom3
**dogelition** _“Chromatic Stripes”_ 2024 image/jxl 22 bytes https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5QrPTCnJUDA1NOLySM1MzygBM7l0FfwUdI2MuQA%3D
2024-09-07 03:44:07
Made a very fast and rough 'HDR' version, but not owning a HDR screen I don't actually know if it worked xD
2024-09-07 03:44:31
It's color managed at least, so something changed
2024-09-07 03:44:53
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/1281822284318900266/HDR_Test.jxl?ex=66dd1d87&is=66dbcc07&hm=3f6819c7d99e3ce925fe3b8fb5d660ee7c31f5021b99ea8e1da22bfd48ed05b7&
dogelition
https://embed.moe/https://cdn.discordapp.com/attachments/824000991891554375/1281822284318900266/HDR_Test.jxl?ex=66dd1d87&is=66dbcc07&hm=3f6819c7d99e3ce925fe3b8fb5d660ee7c31f5021b99ea8e1da22bfd48ed05b7&
2024-09-07 05:43:00
works and looks nice
Oleksii Matiash
2024-09-07 07:56:25
Could anybody point me to the correct direction of manual jxl creation? I just want to create flag, it is very simple, two horizontal color bars
CrushedAsian255
2024-09-07 07:56:48
Can you give us a rough design?
Oleksii Matiash
CrushedAsian255 Can you give us a rough design?
2024-09-07 07:58:40
https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg
CrushedAsian255
2024-09-07 08:02:44
This?
Oleksii Matiash
2024-09-07 08:07:00
Exactly. Now I want to know how to do it 😅
CrushedAsian255
2024-09-07 08:07:33
The if commands are prediction branches
2024-09-07 08:07:44
If the command is true, it takes the top branch
2024-09-07 08:07:52
Otherwise it takes the bottom branch
Oleksii Matiash
2024-09-07 08:08:29
No, I mean how to convert from code to jxl. And where this screenshot is from
CrushedAsian255
2024-09-07 08:08:52
I use this one
2024-09-07 08:08:56
https://qon.github.io/jxl-art/?
Oleksii Matiash
CrushedAsian255 https://qon.github.io/jxl-art/?
2024-09-07 08:09:14
Thank you!
CrushedAsian255
2024-09-07 08:09:32
There’s a different one (the original) that more people use but I prefer that one
Meow
**dogelition** _“Chromatic Stripes”_ 2024 image/jxl 22 bytes https://jxl-art.lucaversari.it/?zcode=c0nNKUkMSMxJLSlJ5QrPTCnJUDA1NOLySM1MzygBM7l0FfwUdI2MuQA%3D
2024-09-07 08:27:34
Is this the smallest ever?
Oleksii Matiash
CrushedAsian255 This?
2024-09-07 08:30:46
However I still did not get the idea of these if c > 0, if c > 1, but ok for now
CrushedAsian255
2024-09-07 08:31:11
C is the current channel
2024-09-07 08:31:46
Although I can optimise that a bit
2024-09-07 08:31:53
Am doing some redundant checks
spider-mario
2024-09-07 08:32:09
yeah, so basically: ``` if c > 0 if c > 1 - Set (blue value) - Set (green value) - Set (red value) ```
2024-09-07 08:32:44
(if using RGB)
CrushedAsian255
2024-09-07 08:33:30
More optimised