|
_wb_
|
|
veluca
how did you flip it? exif?
|
|
2021-04-06 05:04:53
|
I compiled a jxl_from_tree that sets orientation to 3 :)
|
|
2021-04-06 05:06:42
|
Could expose that too, it can be nice to change orientation
|
|
|
Pieter
|
2021-04-06 05:49:59
|
Is it possible to transpose (mirror around x=y axis) a jxl_from_tree description?
|
|
2021-04-06 05:50:23
|
just swapping x with y, and N with W
|
|
|
_wb_
|
2021-04-06 05:53:56
|
Not completely
|
|
2021-04-06 05:54:23
|
e.g. NE can be used but not SW
|
|
2021-04-06 05:55:54
|
In some cases it can be done, but not in general
|
|
2021-04-06 05:56:28
|
But you can do it via orientation
|
|
2021-04-06 05:56:44
|
Transpose the whole image, that is
|
|
2021-04-06 05:57:03
|
All the 8 orientations
|
|
2021-04-06 05:59:41
|
|
|
|
Pieter
|
2021-04-06 06:00:09
|
NE would remain NE under transposition
|
|
2021-04-06 06:00:22
|
Oh, no.
|
|
2021-04-06 06:00:29
|
I'm confusing east with west.
|
|
|
_wb_
|
2021-04-06 06:01:18
|
NW remains, and gradient predictor is unchanged because N+W-NW = W+N-NW
|
|
2021-04-06 06:01:56
|
But NE changes, and so does the Weighted predictor
|
|
2021-04-06 06:02:23
|
Also for some reason we made WW a predictor but not NN
|
|
|
Master Of Zen
|
2021-04-06 01:51:19
|
<@!794205442175402004> Can I ask you for something at least 7800x3300? Will be interesting see end result BPP)
|
|
|
_wb_
|
2021-04-06 02:17:03
|
that is a specific resolution, lol
|
|
2021-04-06 02:17:24
|
```
RCT 21
Height 1024
Width 1024
Orientation 4
Alpha
if y > 350
if WGH > 0
- AvgN+NE + 1
- AvgN+NE - 1
if c > 2
- Set 255
if W-NW > -1
if NW-N > -1
if N > 254
if c > 0
- Set -255
- Set 0
- W + 1
- NW + 0
- Select + 1
```
|
|
2021-04-06 02:17:29
|
adding alpha support
|
|
2021-04-06 02:17:43
|
|
|
2021-04-06 02:17:55
|
|
|
2021-04-06 02:26:06
|
|
|
2021-04-06 02:26:16
|
|
|
2021-04-06 02:33:25
|
Also adding support for bitdepths that are not the default 8
|
|
2021-04-06 02:34:09
|
as well as reinterpreting the integers as floating point with a given number of exponent bits
|
|
2021-04-06 02:34:13
|
```
RCT 0
Height 1024
Width 1024
Orientation 1
Bitdepth 11
FloatExpBits 6
if y > 0
- N + 1
- Set 0
```
|
|
2021-04-06 02:34:24
|
|
|
2021-04-06 02:34:32
|
|
|
2021-04-06 02:35:35
|
11-bit means actually 10-bit because the first bit is the sign bit, and the first 6 bits are treated as a floating point exponent so the last 4 are the mantissa
|
|
2021-04-06 02:35:57
|
this allows representing nonlinear gradients more easily
|
|
2021-04-06 03:11:43
|
for example
|
|
2021-04-06 03:11:52
|
```RCT 0
Height 1024
Width 1024
Orientation 4
/*
Bitdepth 10
FloatExpBits 4
*/
if y > 350
if WGH > 0
- AvgN+NE + 1
- AvgN+NE - 1
if W-NW > -1
if NW-N > -1
if N > 254
- Set 0
- W + 1
- NW + 0
- Select + 1
```
|
|
2021-04-06 03:12:01
|
|
|
2021-04-06 03:12:12
|
|
|
2021-04-06 03:12:35
|
add the Bitdepth 10, FloatExpBits 4 that was commented out, and you get
|
|
2021-04-06 03:12:44
|
|
|
2021-04-06 03:12:52
|
|
|
2021-04-06 03:13:39
|
basically this gives a global poor mans gamma adjustment, kind of
|
|
|
Scope
|
2021-04-06 03:16:39
|
How costly would it be to add animation, especially with the possibility of setting a delay between frames?
|
|
|
_wb_
|
2021-04-06 03:17:30
|
costly in bytes or in effort to add that to jxl_from_tree ?
|
|
|
Scope
|
2021-04-06 03:17:49
|
In bytes
|
|
|
_wb_
|
2021-04-06 03:19:52
|
well I think N frames are basically N times 1 frame, roughly speaking
|
|
2021-04-06 03:20:37
|
the global image header can be saved, but that's not a lot (and the frameheader gets slightly larger too in case of animation)
|
|
2021-04-06 03:22:17
|
so you could do an animated version of the burning chessboard where the y threshold where the burning starts moves down in every frame, but you'd basically have to re-encode the tree for every frame (trees cannot be shared between frames)
|
|
2021-04-06 03:22:46
|
let's say you could do 20 frames in 1 KB or so
|
|
2021-04-06 03:23:22
|
could probably make a pretty nifty animated fire in a few KB
|
|
2021-04-06 03:24:07
|
but making this convenient in jxl_from_tree is not so easy, that will require quite a bit of code plumbing
|
|
|
Scope
|
2021-04-06 03:24:50
|
So roughly the same as combining multiple groups into one image?
Because I think with animations it would be possible to do interesting things too, for example looped in 2-5 frames with size less than 256 bytes
|
|
|
_wb_
|
2021-04-06 03:25:46
|
yes, a few looping frames should easily fit in 256 bytes if the frames themselves are like 50 bytes
|
|
|
Crixis
|
2021-04-06 03:26:22
|
I want to just encode the difference from the previous tree <:kekw:808717074305122316>
|
|
|
_wb_
|
2021-04-06 03:26:22
|
it would just require jxl_from_tree to take multiple files as input or something, one per frame
|
|
|
|
Deleted User
|
2021-04-06 03:26:53
|
By the way it seems like fire, clouds and other natural-looking gradients can be easily encoded in Modular... What do you think of removing those artificially from the image (cloud removal would be easier, because sky is uniform) and overlaying transparent cheaply-encoded Modular layer?
|
|
2021-04-06 03:28:49
|
Of course it'd be done at lower bpp, because at higher qualities it'd be easier to just encode everything with VarDCT.
|
|
|
_wb_
|
2021-04-06 03:28:50
|
you could cheat and encode all frames in one big invisible multi-group larger-than-canvas frame, where each group represents a frame, and then blit the actual frames from it using patches... but signaling these dummy frames with patches will have some overhead
|
|
2021-04-06 03:30:03
|
removing clouds and replacing them with similar-looking artificially generated clouds is a cool idea but likely very hard to implement, both the extraction step and the 'find a modular image that produces something similar' step
|
|
2021-04-06 03:30:38
|
that's the kind of thing an AI-MozGuetzli-JXL from 2035 might do
|
|
|
|
Deleted User
|
2021-04-06 03:31:37
|
Maybe something slightly different (and a bit easier), like encoding the lowest frequencies with VarDCT (so no removing clouds entirely) and overlay the high-frequency Modular gradient?
|
|
|
_wb_
|
2021-04-06 03:37:19
|
maybe a library of texture patterns (clouds, grass, brick walls, ...) could be collected, and an AI-based encoder could detect and extract regions that can be represented (with low fidelity but high appeal) using such a pattern blended over the LF, but it's a very hard problem...
|
|
2021-04-06 03:37:55
|
for now, let's just explore it for the sake of the art ๐
|
|
|
Scope
|
2021-04-06 03:42:18
|
For automatic encoding this is a difficult challenge, but for some kind of handmade art to get the smallest image size (as created for demoparty) it is possible
|
|
|
_wb_
|
2021-04-06 04:02:59
|
```
RCT 5
Alpha
if c > 0
if c > 2
if Prev > 50
- Set 255
if y > 0
- AvgW+N - 1
- Set 255
if PrevAbsErr > 3
- Set 255
if W > 20
- AvgW+N - 10
- Set 0
if N-NN > -1
if W > 238
- Set 238
if W > 2
if W-WW > -1
- AvgN+NE + 1
- W - 3
- Set 3
if N > 6
- AvgN+NW - 1
- Set 0
```
|
|
2021-04-06 04:03:27
|
|
|
2021-04-06 04:03:36
|
|
|
2021-04-06 04:04:02
|
this one you can blend against whatever background
|
|
|
|
veluca
|
|
_wb_
maybe a library of texture patterns (clouds, grass, brick walls, ...) could be collected, and an AI-based encoder could detect and extract regions that can be represented (with low fidelity but high appeal) using such a pattern blended over the LF, but it's a very hard problem...
|
|
2021-04-06 04:20:45
|
that's actually the last thing I was doing during my internship (adding pattern generation to patches), but I decided to drop it in the end ๐
|
|
|
_wb_
|
2021-04-06 05:10:31
|
|
|
|
Master Of Zen
<@!794205442175402004> Can I ask you for something at least 7800x3300? Will be interesting see end result BPP)
|
|
2021-04-06 05:11:07
|
the above jxl is 10240x10240
|
|
|
|
veluca
|
2021-04-06 05:11:33
|
I guess it's hard to make a png of it? ๐
|
|
|
_wb_
|
2021-04-06 05:12:05
|
the png is too big to fit on discord
|
|
|
|
veluca
|
2021-04-06 05:12:26
|
weird though, it's fairly repetitive
|
|
2021-04-06 05:12:35
|
can you make one with something more interesting? ๐
|
|
|
|
Deleted User
|
2021-04-06 05:23:56
|
My WSL2 ran out of RAM and crashed while trying to decode this thing...
|
|
|
Master Of Zen
|
|
_wb_
the above jxl is 10240x10240
|
|
2021-04-06 05:29:22
|
thanks, I'm thinking to get myself a new wallpaper) or tile for wallpaper
|
|
|
_wb_
that is a specific resolution, lol
|
|
2021-04-06 05:30:55
|
I could have went full fabian and asked for 7725x3282 ))
|
|
|
surma
|
2021-04-06 06:03:12
|
Btw, I open-sourced the web app. PRs welcome ๐
|
|
2021-04-06 06:03:13
|
https://github.com/surma/jxl-art
|
|
|
fab
|
2021-04-06 06:04:57
|
starred
|
|
|
Master Of Zen
|
|
_wb_
the above jxl is 10240x10240
|
|
2021-04-06 06:27:49
|
that's `9.91821289e-7` BPP <a:cooldoge:730176920162926793>
|
|
2021-04-06 06:28:16
|
You know it's getting in cool zone when you start using notation)
|
|
|
Pieter
|
2021-04-06 06:29:44
|
Soooo... it should be easy to update it now to the new and more advanved jxl_from_tree?
|
|
|
|
veluca
|
2021-04-06 07:46:35
|
after we opensource it... ๐
|
|
|
Pieter
|
|
_wb_
|
2021-04-06 07:54:02
|
|
|
2021-04-06 07:54:32
|
|
|
2021-04-06 07:55:08
|
8192 x 5120
|
|
|
Pieter
|
2021-04-06 07:55:48
|
Is the orientation flag (the 8 different ways) per group or for the whole image?
|
|
|
_wb_
|
2021-04-06 07:56:08
|
whole image
|
|
2021-04-06 07:56:12
|
sadly
|
|
2021-04-06 07:56:35
|
not even per frame
|
|
2021-04-06 07:56:58
|
the above image needs to be seen at 1:1 to appreciate it
|
|
2021-04-06 07:57:28
|
I wasted way too much time on getting the flames to kind of tile nicely despite the group boundaries
|
|
2021-04-06 07:58:26
|
the sierpinskis at the bottom are kind of cool imo
|
|
2021-04-06 07:59:43
|
it's of course still a pretty repetitive image
|
|
|
Pieter
|
2021-04-06 08:03:13
|
I liked the ones that looked less symmetrical, actually.
|
|
|
_wb_
|
|
2021-04-06 08:03:42
|
I really liked this one.
|
|
|
_wb_
|
|
2021-04-06 08:07:31
|
And this one.
|
|
|
monad
|
2021-04-06 08:12:21
|
When Discord starts embedding JPEG XL, this channel is going to look funny.
|
|
|
|
Deleted User
|
|
Pieter
I really liked this one.
|
|
2021-04-06 08:14:10
|
Agree. The second one you've mentioned is also good and "modern"-looking, but the first one is IMHO the pinnacle of this channel.
|
|
|
_wb_
|
2021-04-06 09:09:27
|
```
RCT 4
Width 3072
Height 4096
Orientation 6
Bitdepth 10
if g > 29
if y > 340
if x > 0
if x > 1121
- N - 1
if WGH > 0
- AvgN+NW + 0
- AvgN+NW - 5
- Set 0
if W-NW > -1
if NW-N > -1
if N > 1021
if c > 0
- Set -1024
- Set 0
if y > 0
- W + 2
if x > 0
- W + 2
- Set 0
- NW + 0
- Select + 2
if W-NW > -1
if NW-N > -1
if N > 1021
if c > 0
if g > 22
- Set -1024
if c > 1
- Set -1024
- Set 0
- Set 0
if y > 0
if g > 24
- W + 2
- W + 1
if x > 0
if g > 24
if g > 26
- W + 2
- W + 1
- W + 2
- Set 0
if g > 25
if g > 27
- NW + 0
- NW - 1
- NW + 0
if g > 21
- Select + 2
- Select + 1
```
|
|
2021-04-06 09:09:38
|
|
|
2021-04-06 09:09:51
|
|
|
|
Pieter
I really liked this one.
|
|
2021-04-06 09:31:55
|
ok here's a variant on that theme
|
|
2021-04-06 09:32:00
|
```
RCT 1
Width 1024
Height 1024
Bitdepth 8
if y > 0
if y > 511
if WGH > 0
- NW + 1
- NW - 1
if WGH > 0
- AvgN+NE + 1
- AvgN+NE - 2
if W > -400
if c > 1
- W - 4
- W - 5
- Set 500
```
|
|
2021-04-06 09:32:09
|
|
|
2021-04-06 09:32:17
|
|
|
2021-04-06 09:50:49
|
```RCT 4
Orientation 1
Bitdepth 10
if W-NW > -1
if NW-N > -1
if N > 1021
if c > 0
- Set 1024
- Set 0
if y > 0
- W + 1
if x > 0
- W + 2
if c > 0
- Set -1024
- Set 0
- NW + 0
- Select + 2
```
|
|
2021-04-06 09:50:59
|
|
|
2021-04-06 09:51:05
|
"Xorpinski"
|
|
2021-04-06 09:51:21
|
(I like jxl files that are exactly 42 bytes)
|
|
2021-04-06 09:51:29
|
|
|
|
|
Deleted User
|
2021-04-06 09:57:49
|
The Answer to Life, the Universe, and Everything โค๏ธ
|
|
|
_wb_
|
|
2021-04-06 10:40:56
|
This one is more for gradient enthusiasts, while the "original" one is definitely for "cloud" lovers. They're still both nice, though, but each in their own way.
|
|
|
NeRd
|
2021-04-07 03:42:12
|
These look amazing, have the changes that allow these images to be made been merged into jxl_from_tree? I'd really love to play with the new features!
|
|
2021-04-07 03:46:29
|
Also, for some reason, I get "Failed to write decoded image." when trying to decode xorpinski-p.jxl:
```
djxl xorpinski-p.jxl xorpinski-p.png
Read 42 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4]
WARNING: failed to pin thread 2.
WARNING: failed to pin thread 1.
WARNING: failed to pin thread 3.
WARNING: failed to pin thread 0.
Decoded to pixels.
Failed to write decoded image.
```
|
|
2021-04-07 03:47:31
|
bigchessboard3-p.jxl also fails:
```
djxl bigchessboard3-p.jxl bigchessboard3-p.png
Read 138 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4]
WARNING: failed to pin thread 0.
WARNING: failed to pin thread 2.
WARNING: failed to pin thread 1.
WARNING: failed to pin thread 3.
Decoded to pixels.
Failed to write decoded image.
```
|
|
2021-04-07 03:48:33
|
art31-p.jxl is fine, here's the output for reference:
```
djxl art31-p.jxl art31-p.png
Read 44 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4]
WARNING: failed to pin thread 0.
WARNING: failed to pin thread 3.
WARNING: failed to pin thread 1.
WARNING: failed to pin thread 2.
Decoded to pixels.
Done.
1024 x 1024, 4.21 MP/s [4.21, 4.21], 1 reps, 4 threads.
Allocations: 244 (max bytes in use: 5.042558E+07)
```
|
|
2021-04-07 03:50:16
|
Actually it looks like a bunch of art files fail to decode, no clue why. I won't continue spamming this channel any further with the same failure messages.
|
|
|
_wb_
|
2021-04-07 05:33:48
|
I am making some of them in 10-bit lately
|
|
2021-04-07 05:34:45
|
You'll have to add `--bits_per_sample 8` to your djxl command
|
|
2021-04-07 05:34:52
|
(or 16)
|
|
2021-04-07 05:35:34
|
PNG cannot do 10 and it just fails instead of automatically saving as 8 or 16 bit instead
|
|
2021-04-07 05:35:46
|
(will be fixed at the next sync)
|
|
|
Pieter
|
2021-04-07 06:53:26
|
For lossless compression, does the encoder detect that a 16-bit PNG e.g. is only using 10 bits?
|
|
|
_wb_
|
2021-04-07 07:33:07
|
It does channel palette in that case
|
|
2021-04-07 10:04:55
|
```
Width 1024
Height 1024
CbYCr
Bitdepth 10
Orientation 3
if c > 0
if c > 1
if x > 0
- W - 1
- Set 500
if y > 0
if WGH > 0
- AvgN+NE + 5
- AvgN+NW - 7
if W > -1000
- W - 18
- Set 700
if y > 0
- N + 1
- Set -500
```
|
|
2021-04-07 10:05:04
|
|
|
2021-04-07 10:05:13
|
"The Smoke Machine"
|
|
2021-04-07 10:05:21
|
|
|
|
|
Deleted User
|
2021-04-07 12:44:44
|
HOLY SHIT
|
|
2021-04-07 12:45:04
|
I NEED TO SEE A 16:9 WIDESCREEN VERSION OF THIS
|
|
|
_wb_
|
2021-04-07 12:59:58
|
|
|
2021-04-07 01:00:25
|
```
Width 1024
Height 1024
CbYCr
Bitdepth 10
Orientation 6
if c > 0
if c > 1
if y > 800
if N-NN > 0
- N + 0
- N + 1
- Set -80
if x > 500
if x > 501
if y > 0
if WGH > 0
- NW + 3
- AvgN+NE - 5
- W + 1
- Set -200
if WGH > 0
- Gradient + 6
- AvgN+NE - 5
if x > 0
- W - 1
- Set 511
```
|
|
2021-04-07 01:00:59
|
"The Abstract Hills of Super-Jixel-Land"
|
|
2021-04-07 01:01:07
|
|
|
2021-04-07 01:09:50
|
this is too much fun
|
|
2021-04-07 01:10:10
|
I need to prepare for the upcoming JPEG meeting instead of making these
|
|
2021-04-07 01:10:23
|
it's addicting though
|
|
2021-04-07 06:34:26
|
this feels cool
|
|
|
Jim
|
|
_wb_
|
2021-04-07 07:26:55
|
```
RCT 1
Bitdepth 10
if c > 1
if y > 0
- N - 1
- Set 500
if y > 0
if WGH > -10
if WGH > 0
if WGH > 10
- AvgN+NE + 3
- NE + 300
- NE - 200
- AvgN+NW - 3
if c > 0
- Set 500
if W > 1200
- Set -200
- W + 9
```
|
|
2021-04-07 07:27:05
|
|
|
2021-04-07 07:27:40
|
"A Perfectly Normal Cave Wall In Hell"
|
|
2021-04-07 07:27:51
|
|
|
2021-04-07 07:28:16
|
some previous sketches of this:
|
|
2021-04-07 07:28:26
|
|
|
2021-04-07 07:28:34
|
|
|
2021-04-07 07:28:43
|
|
|
2021-04-07 07:28:53
|
|
|
2021-04-07 07:29:02
|
|
|
2021-04-07 07:29:10
|
|
|
2021-04-07 07:31:53
|
This trick of selecting on `WGH` and basically throwing off the weighted predictor by kicking it in the nuts whenever its subpredictors are getting good is just great for creating randomish textures of different kinds
|
|
2021-04-07 07:58:45
|
http://sneyers.info/jxl/art/
|
|
2021-04-07 07:59:10
|
simple test page
|
|
|
improver
|
2021-04-07 08:05:57
|
displays on chromium snapshot :>
|
|
|
_wb_
|
2021-04-07 08:14:47
|
All seem to render fine, including when there's alpha or if it's 10-bit
|
|
|
Pieter
|
2021-04-07 08:54:37
|
Apparently ML-based codecs aren't entirely crazy: https://opensource.googleblog.com/2021/04/lyra-enabling-voice-calls-for-next-billion-users.html
|
|
2021-04-07 08:55:45
|
Still waiting for JPEG-XL2 which uses an ML model for the predictor, and produces cat pictures with empty data stream.
|
|
|
improver
|
2021-04-07 10:15:13
|
i suspect that doing actual cat pictures in jxl-art way wouldn't b that hard if patches were involved
|
|
2021-04-07 10:17:35
|
make fur texture, then other features, use them as patches to make up whole images
|
|
|
_wb_
http://sneyers.info/jxl/art/
|
|
2021-04-07 10:34:39
|
should make server properly give `Content-Type` of `image/jxl`, as right now "Open image in new tab" saves instead of actually opening it
|
|
|
raysar
|
2021-04-07 11:47:00
|
1600 bytes, who can do more? ๐
|
|
2021-04-07 11:48:16
|
i need to force modular because it use vardct, it's not smart ^^
|
|
|
monad
|
2021-04-08 07:23:44
|
Just use `-s 9` instead of `-s 8`?
|
|
|
Crixis
|
2021-04-08 08:10:39
|
-s 9 -E 3
|
|
|
_wb_
|
2021-04-08 08:11:17
|
who can make the coolest JXL logo in jxl art ?
|
|
|
Crixis
|
2021-04-08 08:14:18
|
s 9 E 3 I 1 g 3
|
|
|
_wb_
|
2021-04-08 08:54:33
|
```
Width 1000
Height 1000
Bitdepth 8
RCT 1
if y > 420
if x > 500
if WGH > 0
- AvgN+NW + 2
- AvgN+NW - 2
if WGH > 0
- AvgN+NE + 2
- AvgN+NE - 2
if c > 1
if y > 0
- N - 1
- Set 300
if c > 0
if y > 0
- N + 1
- Set -500
if y > 0
if y > 220
if x > 499
if x > 500
- NW + 0
if y > 280
if N > -100
- N - 10
- Set 0
if N > 300
- Set 200
- N + 10
- NE + 0
if x > 500
- NE + 0
- NW + 0
if W > -100
if W > 300
- Set 200
if x > 960
- W + 10
if x > 822
- W - 10
if x > 628
- W + 10
if x > 340
- W - 10
if x > 175
- W + 10
if x > 0
- W - 10
- Set 255
- Set 0
```
|
|
2021-04-08 08:54:42
|
JXL logo
|
|
2021-04-08 08:54:53
|
|
|
2021-04-08 08:55:03
|
|
|
2021-04-08 08:56:19
|
hmm one of the offsets isn't right
|
|
2021-04-08 09:03:33
|
tweaked it a bit
|
|
2021-04-08 09:03:41
|
|
|
2021-04-08 09:03:50
|
|
|
2021-04-08 10:43:59
|
This is a single standalone 4 kb HTML file: http://sneyers.info/jxl/art/
|
|
|
raysar
|
|
Crixis
s 9 E 3 I 1 g 3
|
|
2021-04-08 11:29:30
|
i reduce the size and format 287bytes, i'm smaller than a 0 pixel avif :p i'm happy :p
|
|
|
fab
|
2021-04-08 11:38:53
|
for %i in (C:\Users\User\Documents\m\*.png) do cjxl "%i" "%i.jxl" -I 0.344 -X 8.21 -P 1 -Q 25.6 -m -s 9 --num_threads=2
|
|
2021-04-08 11:39:02
|
|
|
2021-04-08 11:42:36
|
|
|
2021-04-08 11:43:21
|
|
|
2021-04-08 11:44:44
|
the second is lossless
|
|
2021-04-08 11:46:24
|
|
|
2021-04-08 11:47:56
|
this is not jpeg xl art i made it with paint
|
|
2021-04-08 11:48:17
|
i don't know how raysar drew the cat
|
|
2021-04-08 12:01:32
|
but i think this is a bug not a cat
|
|
|
raysar
|
2021-04-08 12:29:51
|
it's a pixel cat, not a coded cat ๐ but the result is the same ^^
|
|
2021-04-08 12:50:57
|
162 bytes, cat with 3 colors
|
|
|
Crixis
|
2021-04-08 12:52:32
|
it is so small!
|
|
|
raysar
|
2021-04-08 01:10:11
|
102bytes cat in white and black
|
|
2021-04-08 01:10:57
|
i need to to go sub 100bytes !
|
|
|
Crixis
|
2021-04-08 01:15:46
|
remove jxl conteiner?
|
|
2021-04-08 01:16:18
|
if there is one
|
|
|
raysar
|
2021-04-08 01:19:38
|
i don't know
|
|
2021-04-08 01:20:14
|
the smallest cat in the web 60 bytes (16*16px) ๐
|
|
|
_wb_
|
|
Crixis
|
|
_wb_
|
|
2021-04-08 01:26:32
|
this crash wic
|
|
|
_wb_
|
2021-04-08 01:27:13
|
it's a 1-bit image, probably the application isn't dealing well with that
|
|
2021-04-08 01:27:24
|
<:logo:829708783336816671>
|
|
2021-04-08 01:27:48
|
the emoji version is a lossy JPEG, the lossless PNG was too large
|
|
|
raysar
|
|
_wb_
|
|
2021-04-08 01:51:17
|
how you do that? ^^
|
|
|
_wb_
|
2021-04-08 01:53:21
|
`-q 100 -s 9 -v -P 0 --override_bitdepth 1`
|
|
|
raysar
|
2021-04-08 01:57:54
|
ok ty, in modular i don't understant what are lossy option, -palette can't fixe max number of colors?
|
|
|
_wb_
|
2021-04-08 01:59:27
|
there are few lossy options in modular, only -Q and --lossy_palette
|
|
|
raysar
|
2021-04-08 02:01:11
|
ok
|
|
2021-04-08 02:01:39
|
nyancat symplifed 252bytes -q 100 -s 9 -v -P 0 --override_bitdepth 2
|
|
|
Crixis
|
|
raysar
nyancat symplifed 252bytes -q 100 -s 9 -v -P 0 --override_bitdepth 2
|
|
2021-04-08 02:20:22
|
Wic fail also on this
|
|
|
raysar
|
2021-04-08 02:20:53
|
xnviewmp read it correctly.
|
|
|
_wb_
|
2021-04-08 06:38:56
|
simple version of the logo:
|
|
2021-04-08 06:38:59
|
```
Width 900
Height 450
Bitdepth 1
RCT 0
if c > 0
if y > 0
if y > 225
if x > 448
if x > 449
- NW + 0
if y > 300
- Set 0
- Set 1
- NE + 0
if x > 449
- NE + 0
- NW + 0
if x > 898
- Set 1
if x > 749
- Set 0
if x > 599
- Set 1
if x > 299
- Set 0
if x > 149
- Set 1
if x > 0
- Set 0
- Set 1
- Set 0
```
|
|
2021-04-08 06:39:07
|
|
|
2021-04-08 06:39:14
|
|
|
2021-04-08 06:40:06
|
simplicity also has its elegance
|
|
2021-04-08 06:49:14
|
fancy version:
|
|
2021-04-08 06:49:18
|
```
Width 1000
Height 1000
Bitdepth 8
RCT 1
if y > 400
if x > 500
if WGH > 0
- AvgN+NW + 2
- AvgN+NW - 2
if WGH > 0
- AvgN+NE + 2
- AvgN+NE - 2
if c > 1
if y > 0
if N > -10
- N - 1
- N + 0
- Set 300
if c > 0
if y > 0
- N + 1
- Set -510
if y > 0
if y > 220
if x > 499
if x > 500
- NW + 0
if y > 280
if N > -100
- N - 10
- Set 0
if N > 300
- Set 200
- N + 10
- NE + 0
if x > 500
- NE + 0
- NW + 0
if W > -100
if W > 300
- Set 200
if x > 960
- W + 10
if x > 800
- W - 10
if x > 628
- W + 10
if x > 340
- W - 10
if x > 175
- W + 10
if x > 0
- W - 10
- Set 255
- Set 0
```
|
|
|
spider-mario
|
2021-04-09 04:13:36
|
come to think of it, maybe there is a niche for splines in jxl-art
|
|
|
Scope
|
2021-04-09 04:15:29
|
Yep
https://discord.com/channels/794206087879852103/824000991891554375/826457184539508786
|
|
|
_wb_
|
2021-04-09 04:17:09
|
Yes, please update jxl_from_tree to add some spline description syntax :)
|
|
2021-04-09 04:18:01
|
This is a lot of fun, but also somewhat useful to produce test bitstreams
|
|
|
raysar
|
2021-04-09 07:36:13
|
xnviewMP don't decode well this image :/
|
|
|
Crixis
|
2021-04-09 07:36:39
|
<#805007255061790730>
|
|
|
raysar
|
2021-04-09 07:37:43
|
it's important to find where is the problem, all decoder need to be perfect for all type of jxl.
|
|
|
_wb_
|
2021-04-09 07:45:05
|
Interesting. I suppose it's a clamping issue?
|
|
|
|
veluca
|
2021-04-09 07:53:44
|
it probably ends up ignoring the bitdepth
|
|
|
_wb_
|
2021-04-09 08:19:59
|
```
RCT 1
if c > 0
if c > 1
- Set 50
if y > 200
if y > 800
- N 0
- N + 1
- Set -300
if y > 0
if y > 500
if x > 509
if x > 510
- AvgN+NW 0
- AvgN+NW - 1
- AvgN+NE 0
if x > 510
- AvgN+NE + 0
- AvgN+NW + 0
if W > 580
- W - 2
if W-WW > -1
- W + 3
if W > -370
- W - 3
- W + 0
- Set 0
```
|
|
2021-04-09 08:20:03
|
Another jxl logo
|
|
2021-04-09 08:20:10
|
|
|
2021-04-09 08:20:19
|
|
|
|
VEG
|
|
_wb_
|
|
2021-04-09 09:28:58
|
Relly nice, much cleaner than <:Xjxl:822166843313225758>
|
|
|
raysar
|
2021-04-09 10:22:30
|
we are nearly to a good logo :p
|
|
|
spider-mario
|
2021-04-09 11:04:00
|
I was wondering if that logo was accidentally HDR, and I think it is
|
|
2021-04-09 11:04:18
|
we donโt intrinsically clip when decoding
|
|
|
_wb_
|
2021-04-10 06:20:36
|
I indeed used out of bounds values, which I guess is the same as HDR if it's above 255 in 8-bit sRGB
|
|
2021-04-10 06:21:33
|
Values go from -370 to 580
|
|
2021-04-10 06:21:41
|
Instead of 0 to 255
|
|
2021-04-11 12:14:30
|
/wraHOh/aCAmCCYAHAewAEYAALQASzhCpsOyYX6dloe+uCwRfCRSkHGgyjiAu8Ly1CtXlBscgv+I
bqAMMgCShAMA
|
|
2021-04-11 12:15:12
|
(I don't know how to upload a jxl on mobile discord, I am on my phone, this is the base64 encoded version)
|
|
2021-04-11 12:15:34
|
"Smoke on the water, fire in the sky"
|
|
2021-04-11 12:18:40
|
https://twitter.com/jonsneyers/status/1381219800299491328?s=19
|
|
2021-04-11 12:19:29
|
```Bitdepth 8
Orientation 7
RCT 1
if y > 0
if x > 500
if c > 0
if c > 1
- Set -150
if x > 501
- W + 1
- Set 0
if WGH > 5
- AvgN+NE + 3
- AvgN+NE - 3
if c > 0
if c > 1
- Set 10
- Set -100
if WGH > 0
- AvgN+NW + 1
- AvgN+NE - 1
if W > 150
- Set 50
- W + 4
```
|
|
2021-04-11 12:20:01
|
But I also hacked jxl_from_tree to crop 100 pixels on the top (right after orientation)
|
|
2021-04-11 12:38:00
|
(another thing to expose: frame offsets. Very practical to hide ugly initialization rows or columns)
|
|
2021-04-11 12:38:37
|
(but on my phone taking a bath now and hacking it in Termux was already painful enough)
|
|
|
|
Deleted User
|
|
_wb_
(but on my phone taking a bath now and hacking it in Termux was already painful enough)
|
|
2021-04-11 12:50:17
|
Show this message to anyone from a century ago. Living in 2077 be like:
|
|
|
_wb_
|
2021-04-11 01:39:37
|
Without the frame offset cropping stuff, it looks like this:
|
|
2021-04-11 01:39:41
|
|
|
2021-04-11 02:18:20
|
```
Orientation 3
RCT 15
if WGH > -7
if WGH > 6
- AvgN+NE + 1
- N + 30
- AvgN+NE - 1
```
|
|
2021-04-11 02:18:49
|
"Ice Cavern"
|
|
2021-04-11 02:19:10
|
|
|
2021-04-11 03:11:44
|
|
|
2021-04-11 03:13:33
|
For some reason, people are suddenly liking 'The Smoke Machine' and following me on twitter
|
|
|
|
veluca
|
2021-04-11 03:14:04
|
hah
|
|
2021-04-11 03:14:19
|
I really didn't expect this when I wrote that tree thingy xD
|
|
|
_wb_
|
2021-04-11 03:25:20
|
Branching on the weighted predictor MA property and using an offset depending on its value is great for natural-looking art
|
|
2021-04-11 03:26:26
|
It's also almost a symbol of the collaboration: WP was by Alexander Rhatushnyak, MA trees by me, and integrating them and allowing predictors per node and offsets is by Luca
|
|
|
Scientia
|
2021-04-11 03:27:42
|
i'm somewhat interested in what use this could have in game textures, especially inorganic textures
|
|
2021-04-11 03:28:04
|
a game using this for some inorganic textures would be neat
|
|
|
_wb_
|
2021-04-11 04:59:43
|
```Width 1000
Height 500
Bitdepth 8
RCT 1
if c > 1
if WGH > 0
- AvgN+NW + 1
- AvgN+NW - 1
if y > 0
if y > 249
if x > 498
if x > 499
- NW + 0
- N - 2
- NE + 0
if x > 499
- NE + 0
- NW + 0
if x > 938
- W + 6
if x > 749
- W - 2
if x > 499
- W + 2
if x > 249
- W - 2
if x > 60
- W + 2
if x > 0
- W - 6
- Set 255
- Set 0
```
|
|
2021-04-11 04:59:47
|
Yet another logo
|
|
2021-04-11 05:00:19
|
/wqYfxAJCAYBAOwASzhDdMN03Tlqxgcmu4FdmEe+PKrLJV+ueVlSnnblmtehwwIyKde8BYyJFMqR l0n5cSkUsoPjjyThAAA=
|
|
2021-04-11 05:00:43
|
|
|
2021-04-11 05:51:14
|
```Bitdepth 9
Orientation 1
RCT 1
if c > 1
- Set -200
if c > 0
if y > 0
- N +1
- Set 0
if N > 600 if y > 250
if y > 500
if y > 750
- NW - 200
- NW - 800
- NW - 3000
- NW - 400
if WGH > -36
if WGH > 35
- AvgN+NW + 1
- AvgN+NE + 250
- AvgN+NE - 2
```
|
|
2021-04-11 05:51:38
|
"Tissue Sample #1337"
|
|
2021-04-11 05:52:03
|
65 bytes
|
|
2021-04-11 05:52:08
|
|
|
2021-04-11 08:46:44
|
I gained over 60 twitter followers today because of the jxl art I am tweeting
|
|
2021-04-11 08:49:28
|
Still a few orders of magnitude fewer followers than <@799692065771749416> ๐
|
|
|
Fox Wizard
|
2021-04-11 08:49:49
|
<:Stonks:806137886726553651>
|
|
|
Pieter
|
2021-04-11 08:50:12
|
<@794205442175402004> I don't want to know how many of them are bots.
|
|
|
_wb_
|
2021-04-11 08:51:21
|
Why would bots follow you?
|
|
|
Pieter
|
2021-04-11 08:52:57
|
You should ask them.
|
|
2021-04-11 08:53:13
|
Lots of usernames don't look very real.
|
|
|
_wb_
|
|
Pieter
|
2021-04-11 08:56:35
|
Updated 6 years, 1 month ago?
|
|
|
_wb_
|
2021-04-11 08:57:14
|
That cannot be right, or did you already have that many followers back then?
|
|
|
Pieter
|
2021-04-11 08:59:14
|
No, certainly not.
|
|
2021-04-11 08:59:31
|
Only reached 2^16 recently.
|
|
|
VEG
|
|
_wb_
For some reason, people are suddenly liking 'The Smoke Machine' and following me on twitter
|
|
2021-04-11 09:24:17
|
I guess it is because of this retweet (more than 200K followers): https://veg.by/z/2021-04-12-00-23-47-4c573293.jpg
|
|
|
Scientia
|
2021-04-12 02:26:55
|
also just asking, how does one compile jxl_from_tree?
|
|
2021-04-12 02:27:40
|
i've tried
`clang -I/mnt/ScientiaStor/Software/Source/Visual/jpeg-xl tools/jxl_from_tree.cc`
and
`gcc -I/mnt/ScientiaStor/Software/Source/Visual/jpeg-xl tools/jxl_from_tree.cc`
|
|
2021-04-12 02:27:58
|
but i must be missing something because it has errors
|
|
2021-04-12 02:48:21
|
nah i think i got it
|
|
2021-04-12 02:52:28
|
having this issue now, this is the same issue i've had with the online tool too, which is strange since i assumed it would work
|
|
|
Scope
|
2021-04-12 02:57:29
|
The online tool is the same as the git, only the private dev version has new features
|
|
|
Scientia
|
2021-04-12 03:30:03
|
Ohhh
|
|
2021-04-12 03:30:07
|
) :
|
|
2021-04-12 03:30:17
|
Hope these get pushed to the git
|
|
|
190n
|
2021-04-12 06:06:36
|
public git repo when
|
|
|
_wb_
|
2021-04-12 07:20:03
|
At next sync
|
|
2021-04-12 07:20:13
|
```
Bitdepth 10
Orientation 1
RCT 1
if c > 0
if y > 0
- N + 1
- Set -500
if W > -1000
- Weighted -10
- Set 2000
```
|
|
2021-04-12 07:20:32
|
"Alien Art"
|
|
2021-04-12 07:20:40
|
36 bytes
|
|
2021-04-12 07:21:09
|
/wr6H0GRCAYBAGAASzgkunkeVbaSBu95EXDn0e7ABz2ShAMA
|
|
2021-04-12 07:21:33
|
|
|
2021-04-12 05:41:57
|
What's the signalling cost for noise? Might be interesting to add some noise to jxl art
|
|
|
raysar
|
2021-04-12 05:43:18
|
noise?
|
|
|
_wb_
|
2021-04-12 05:45:19
|
Noise generation. Can probably signal some rather extreme and weird noise that could be artistic, but I forgot how much it costs to signal
|
|
2021-04-12 05:46:43
|
It's a lookup table of noise intensity for X and B depending on Y, right? Or I suppose channel 0 and 2 depending on channel 1
|
|
2021-04-12 05:49:41
|
The table is signalled as uncompressed half-floats though, right? So not super cheap, something like 32 bytes or so
|
|
|
raysar
|
2021-04-12 06:10:26
|
Your jxl art use the modular decoding? Is there noise generation in it?
|
|
2021-04-12 06:10:46
|
|
|
|
|
Deleted User
|
|
raysar
Your jxl art use the modular decoding? Is there noise generation in it?
|
|
2021-04-12 06:42:13
|
Yes, it's all Modular exclusively. Modular generates MA tree and encodes only the difference between the value predicted from that tree and the actual pixel value. You want this difference to be the smallest for best compression. JXL Art assumes that the difference between tree's prediction and "actual" value is exactly 0 so you're seeing only predicted values.
|
|
|
|
veluca
|
|
_wb_
What's the signalling cost for noise? Might be interesting to add some noise to jxl art
|
|
2021-04-12 07:05:10
|
16 bytes, more or less
|
|
|
raysar
|
|
Yes, it's all Modular exclusively. Modular generates MA tree and encodes only the difference between the value predicted from that tree and the actual pixel value. You want this difference to be the smallest for best compression. JXL Art assumes that the difference between tree's prediction and "actual" value is exactly 0 so you're seeing only predicted values.
|
|
2021-04-12 07:07:29
|
Thank you, that's clear ๐
|
|
|
Pieter
|
2021-04-12 07:09:23
|
_now wonders about a hypothetical JPEG-XL2 that has a jxl\_from\_tree like language to encode predictors for DCT coefficients._
|
|
|
|
veluca
|
2021-04-12 07:14:40
|
I actually thought about doing it
|
|
2021-04-12 07:14:47
|
and tried it
|
|
2021-04-12 07:15:04
|
it was basically the same as the current context model though
|
|
2021-04-12 07:17:03
|
which means either our ctx model is very good, or our tree learning heuristic is very bad xD
|
|
2021-04-12 07:17:43
|
although I did use (in my PhD thesis) a jxl_from_tree-like language to compress graphs ๐
|
|
|
Pieter
|
2021-04-12 07:17:57
|
how are the DCT coefficients encoded in JPEG-XL, actually?
|
|
|
|
Deleted User
|
|
Pieter
how are the DCT coefficients encoded in JPEG-XL, actually?
|
|
2021-04-12 07:21:11
|
IIRC Modular encodes DC (1:8 scale) coeffs
|
|
|
|
veluca
|
2021-04-12 07:22:33
|
DC, yes
|
|
2021-04-12 07:22:49
|
DCT, just ANS (or huffman) + context model
|
|
|
_wb_
|
2021-04-12 07:27:45
|
The ctx model for AC does have some degrees of freedom though
|
|
2021-04-12 07:28:20
|
Not full MA, but there is some expressivity there
|
|
2021-04-12 07:31:31
|
AC coeffs are encoded roughly as follows: first the number of nonzero coeffs is encoded, with its own ctx model
|
|
2021-04-12 07:32:41
|
Then coeffs are encoded, with a ctx that can depend on amongst others the coeff index, nb of nonzeroes left, DC values
|
|
2021-04-12 07:34:05
|
Once the last nonzero coeff is encoded the decoder will know that and starts with the next block
|
|
|
Pieter
|
2021-04-12 07:56:48
|
And DC is encoded as modular?
|
|
|
_wb_
|
|
Pieter
|
2021-04-12 08:06:14
|
With any restrictions on features or so?
|
|
|
_wb_
|
2021-04-12 08:06:20
|
So you could do a jxl art in DC and get it 8x upsampled
|
|
2021-04-12 08:06:36
|
No restrictions, but the encoder doesn't do fancy stuff
|
|
2021-04-12 08:07:09
|
So there are specialized decoder codepaths that are faster if the encoder was tame
|
|
|
Pieter
|
2021-04-12 08:07:26
|
VarDCT means that the DCT areas can be variable size, right? How is the "DC image" to be encoded with modular determined then?
|
|
|
_wb_
|
2021-04-12 08:08:08
|
DC image is always 1:8
|
|
2021-04-12 08:08:24
|
Bigger blocks also have low freq AC in the DC image
|
|
|
Pieter
|
2021-04-12 08:08:52
|
I'm confused
|
|
|
_wb_
|
2021-04-12 08:10:26
|
We do fancy math, e.g. a 16x8 block has two 'DC' coeffs
|
|
|
Pieter
|
2021-04-12 08:21:49
|
Interesting.
|
|
|
|
veluca
|
|
Pieter
Interesting.
|
|
2021-04-12 08:33:51
|
that was *a tad* tricky to get to work right...
|
|
|
Pieter
|
2021-04-12 08:35:36
|
I can imagine something like taking the 2 "DC" coefficients, then using their average as actual 16x8 DC, and their difference as 8,8 AC coefficient, and then consuming all other AC coefficients from the decoder.
|
|
|
_wb_
|
2021-04-12 08:36:36
|
yes, you'd take the DC and the coeff that does lowest freq horiz, translate them to two "DC" coeffs
|
|
2021-04-12 09:23:33
|
```
Bitdepth 10
Orientation 3
RCT 1
if c > 1
- Set -200
if c > 0
if y > 0
- N -1
- Set 500
if y > 400
if WGH > 0
- AvgN+NW 80
- AvgN+NW -80
if W > -1000
- Weighted -5
- Set 2000
```
|
|
2021-04-12 09:23:52
|
"Self-assembling Alien Art"
|
|
2021-04-12 09:24:30
|
`/wr6H1FQTAgGAQCQAEs4JJp3vWxBBeeRkvKCFAUXPRs03vN6A0JvPlh24IMeScIBAA==`
|
|
2021-04-12 09:24:57
|
|
|
|
Scope
|
2021-04-12 09:29:14
|
`data:image/jxl;base64,/wr6H1FQTAgGAQCQAEs4JJp3vWxBBeeRkvKCFAUXPRs03vN6A0JvPlh24IMeScIBAA==`
|
|
|
_wb_
|
2021-04-12 09:29:29
|
That would be fun to animate, with that y coord just changing every frame
|
|
|
Pieter
|
2021-04-12 09:30:18
|
would it be very hard to add a time variable to the language?
|
|
2021-04-12 09:31:10
|
just encode everything as a single frame, with separate group(s) for every timeslot, and then use sections to extract frames from it?
|
|
|
_wb_
|
2021-04-12 09:31:59
|
Probably not really, but probably easier to have something that takes multiple trees as input and does one frame per tree (and then a simple bash script can produce the input files)
|
|
|
Pieter
|
2021-04-12 09:32:34
|
oh, right, you have separate MA trees per frame?
|
|
|
_wb_
|
2021-04-12 09:33:41
|
You can even have separate ones per group, but we just tend to use the global one since group id is a property you can split on
|
|
|
Pieter
|
2021-04-12 09:56:40
|
what is the difference between having a separate MA tree per group, and permitting a global tree with groupsplits are at the top?
|
|
|
_wb_
|
2021-04-13 05:47:58
|
Global tree is more efficient since the trees tend to be similar between groups so there is less signaling overhead with a global tree
|
|
|
Pieter
|
2021-04-13 06:01:14
|
So what is the use for per-group trees, as those can be emulated by a global tree with group-based splits at the top?
|
|
|
_wb_
|
2021-04-13 06:09:44
|
Probably no use, current encoder does not do it
|
|
2021-04-13 06:10:27
|
But I guess it _could_ be more efficient sometimes
|
|
2021-04-13 06:11:04
|
Like if all groups except one use tree A while group 57 uses tree B
|
|
2021-04-13 06:12:12
|
Then with a global tree you'd have to do
```
if g > 57
Subtree A
if g > 56
Subtree B
Subtree A
```
|
|
2021-04-13 06:13:02
|
If tree A is a big one, signalling it twice is not so good
|
|
|
Pieter
|
2021-04-13 06:14:31
|
Ah you can have both a global one and per-group ones, I see.
|
|
2021-04-13 06:14:58
|
That's equivalent more or less to allowing "if g == C" branches, but only at the top level of the tree.
|
|
|
_wb_
|
2021-04-13 06:16:46
|
Yes
|
|
2021-04-13 07:24:58
|
```
RCT 1
if c > 0
if W+N-NW > 1200
- Set -1200
- Weighted 30
- Set 0
```
|
|
2021-04-13 07:25:27
|
/wr6HwGRCAYBAEwASzhE5i3dQXEaWAD7CupzJAkHAA==
|
|
2021-04-13 07:26:06
|
|
|
2021-04-13 07:28:42
|
```
Bitdepth 10
Orientation 1
RCT 1
if c > 0
if W+N-NW > 1200
- Set -1200
- Weighted 30
if N > -400
- Weighted - 1
- Set 1100
```
|
|
2021-04-13 07:29:13
|
/wr6H0GRCAYBAGQASzhE3C1PyMeqYMn/kX4F8TjiQDGBJOEAAA==
|
|
2021-04-13 07:30:54
|
"The Glitchy Dunes of Cyberia"
|
|
2021-04-13 07:31:21
|
|
|
2021-04-13 08:11:53
|
The weighted predictor is fun. And we're only scratching the surface here: this is all just the **default** weighted predictor. Custom weights could be signalled to get whole families of different weighted predictors...
|
|
2021-04-13 08:13:58
|
<@179701849576833024> what does WGH mean? It's the weighted predictor max-amplitude subpredictor error, so I know what the W means but not the G and H...
|
|
|
|
veluca
|
2021-04-13 08:15:41
|
WeiGHted ๐คฃ
|
|
|
VEG
|
2021-04-13 08:28:30
|
<@!794205442175402004> you could try to sell a picture like this https://twitter.com/jonsneyers/status/1379158649478713349 as an NFT token ๐ Who knows, maybe the technical background behind this picture will make somebody interested, and it will collect loads of money for further development of the codec.
|
|
|
Scope
|
2021-04-13 09:43:12
|
In my opinion, the NFT is a quite shady hype thing, which is more likely to bring a bad reputation to Jpeg XL than give something positive and useful (except for money from someone who then also wants to make money on it when reselling it at a higher price later)
|
|
|
_wb_
|
2021-04-13 10:10:41
|
If it's done without energy-burning proof-of-work, I don't mind NFT as a method for selling art. Of course it's overhyped and silly, but in that sense it is not different from traditional, reputable art auctions.
|
|
2021-04-13 10:11:53
|
We don't need money to develop jxl, afaik. I have a job at Cloudinary, the others have a job at Google, we get paid sufficiently already :)
|
|
|
Scope
|
2021-04-13 10:27:26
|
The point is that this is not a sale of some unique thing with all the rights to obtain and collect as in the real world, it's just a sale of a unique hash that works only on a particular platform, which is associated with some thing
|
|
2021-04-13 10:34:09
|
It's like selling a unique Eiffel Tower in some computer game and only in this game it will be the only and unique or for example a soccer player from some team, but their owner will be only in this computer game (as long as it will exist)
|
|
2021-04-13 10:46:53
|
Also, most big and high-profile NFT sales are advertisements for various services related to the NFT promotion or charity (when the buyer does not care what to buy), the rest in the hope of reselling it at a profit
|
|
|
_wb_
|
2021-04-13 10:48:53
|
```
RCT 1
if N > -200
if W > 0
- NE -1
if c > 0
- AvgN+NW -1
- AvgW+N - 1
- Set 400
```
|
|
2021-04-13 10:49:09
|
"Stairway to Heaven"
|
|
2021-04-13 10:49:35
|
/wr6HwGRCAYBAFQASzhC3O09qH6PCzxI9BB2wQyShAMA
|
|
2021-04-13 10:49:59
|
|
|
|
Scope
|
2021-04-13 10:54:42
|
+ `data:image/jxl;base64,`
like `data:image/jxl;base64,/wr6HwGRCAYBAFQASzhC3O09qH6PCzxI9BB2wQyShAMA`
and it will be convenient to view when copying directly in the browser address bar
|
|
|
_wb_
|
2021-04-13 10:56:30
|
Right. Doing that on twitter now
|
|
2021-04-13 10:57:10
|
I have no clue where those stairs are coming from at the bottom
|
|
|
Scope
|
2021-04-13 10:59:23
|
<https://github.com/mathiasbynens/small/issues/114>
https://twitter.com/mathias/status/1381889698226917376
|
|
|
_wb_
|
2021-04-13 07:40:06
|
data:image/jxl;base64,/wqaGeh/oEgIBgEAFAELgItlK8bI1pigmwgqcJDEAINY63n4j32HzZAbSvhPopdjbEKq0wxZNOG/
/9cG6Ofan39symrgv4bOyKH2HwEm+ZMkHAA=
|
|
2021-04-13 07:40:49
|
```
Height 820 Bitdepth 10
Orientation 1
RCT 1
if c > 1 - Set 100
if c > 0
if y > 0 - N + 2
- Set -1000
if y > 0
if x > 1022 if y > 200
if y > 620 - Set 0
- Set 1023 - Set 0
if x > 0
if y > 410
if x > 509
if x > 510 - NW + 0
if y > 510 - Set 0
- N 0 - NE + 0
if x > 510
- NE + 0
- NW + 0
if y > 200 if y > 620
- Set 0 - Set 1023
- Set 0
if x > 822
- Set 1023
if x > 199
- Set 0 - Set 1023
```
|
|
2021-04-13 07:40:55
|
Yet another logo
|
|
2021-04-13 07:41:00
|
|
|
|
_wb_
|
|
2021-04-13 07:42:59
|
Similar to this one, but the X is going all the way here
|
|
2021-04-14 06:20:38
|
```RCT 1
Squeeze
if c > 31
- Set 0
if W+N-NW > 100
- Set -200
- Weighted 7
```
|
|
2021-04-14 06:21:27
|
data:image/jxl;base64,/wr6HwGRCAYBAFAASzhBvO15IutBdUj+EWONJGEBgAA=
|
|
2021-04-14 06:22:47
|
"Alien Message"
|
|
2021-04-14 06:22:52
|
|
|
2021-04-14 06:38:56
|
```
RCT 1
if PrevErr > 0
- Set 0
if W+N-NW > -500
- Weighted -1
- Set 300
```
|
|
2021-04-14 06:40:29
|
data:image/jxl;base64,/wr6HwGRCAYBAEgASzhC5i390BNw2nk1MCxIEg4A
|
|
2021-04-14 06:42:04
|
More Alien Art
|
|
2021-04-14 06:42:09
|
|
|
|
190n
|
2021-04-14 06:42:58
|
with all these data urls i think you are winning the discord message encode challenge that i had proposed in the av1 server
|
|
|
_wb_
|
2021-04-14 06:46:45
|
What was that challenge?
|
|
|
190n
|
2021-04-14 06:48:10
|
i proposed it here https://discord.com/channels/587033243702788123/612960210570575900/823425406475436032
|
|
2021-04-14 06:48:42
|
a couple small avif encodes starting here https://discord.com/channels/587033243702788123/610740411723546635/823475615650152471
|
|
|
_wb_
|
2021-04-14 06:53:27
|
Ah, I see. Yes the avif header overhead is kind of silly
|
|
|
190n
|
2021-04-14 06:55:36
|
yeah i used avif since i had heard it was better than jxl for small images, but i didn't realize there would be so much overhead. and this was before chromium had jxl support which defeated the purpose of making them data urls
|
|
|
_wb_
|
2021-04-14 09:19:40
|
```
RCT 1
if c > 0
if c > 1
if W > 200
- Set 0
- Weighted 13
if Prev > 50
if Prev > 70
if Prev > 100
if Prev > 120
- Set 0
- Set -400
- Set 0
- Set 400
- Set 0
if W > -80
- AvgW+NW - 1
- Set 320
```
|
|
2021-04-14 09:19:59
|
"Alien Architecture"
|
|
2021-04-14 09:20:50
|
data:image/jxl;base64,/wr6HwGRCAYBAKAASzgiOnfKLyl1NObT+JCRR2oVLCCAa5TIMEBkkCxIIgMHgP2IJOEAAA==
|
|
2021-04-14 09:20:59
|
|
|
2021-04-14 03:18:34
|
data:image/jxl;base64,/wr6HwGRCAYBAGwASzhCtjlvwCvy9NvFPsJhYfCVLD2mQW1IEg4A
|
|
2021-04-14 03:19:13
|
```
RCT 1
if c > 0 if c > 1
- Set -200 - Set 300
if N > -350
if W > 101
- AvgAll - 1
- Weighted - 3
- Set 250
```
|
|
2021-04-14 03:20:00
|
"Cupid's Factory" ๐๐ญ
|
|
2021-04-14 03:20:13
|
|
|
|
Petr
|
|
_wb_
|
|
2021-04-14 04:01:39
|
Cool, girls will go nuts. ๐
|
|
|
Master Of Zen
|
|
_wb_
|
|
2021-04-14 05:52:05
|
overhead of sending this over internet is equivalent of having large box for wedding ring
|
|
|
_wb_
|
2021-04-14 06:31:43
|
data:image/jxl;base64,/wr6H7FATAgGAQBcAEs4QrztoTB2LKCxxwE8epRBK0gSDnAC
|
|
2021-04-14 06:32:16
|
```
Orientation 6 RCT 21
if PPrev > 150
- Set 0
if W > -100
if WGH > 0 - Weighted - 1
- AvgW+NW - 1 - Set 500
```
|
|
2021-04-14 06:32:31
|
"Alien Farmland"
|
|
2021-04-14 06:32:53
|
|
|
2021-04-14 07:45:52
|
data:image/jxl;base64,/wr6H0GRCAYBAIAASzhEtjntAcQjNd/5QVtY4uMOCZx/VOD8460xBknCAVw=
|
|
2021-04-14 07:46:21
|
```
Bitdepth 10
Orientation 1 RCT 15
if c > 0
if c > 1
if x > 0
- W -1
- Set 511
if y > 0 - N -1
- Set 511
if N > -500
if WGH > 10
- AvgN+NW -2
- Weighted -1 - Set 1500
```
|
|
2021-04-14 07:48:31
|
Not sure if it should be oriented like that
|
|
2021-04-14 07:48:49
|
|
|
2021-04-14 07:49:08
|
This has something curtainy
|
|
2021-04-14 07:49:26
|
But upside down it maybe is more interesting
|
|
2021-04-14 07:50:53
|
|
|
2021-04-14 07:51:31
|
Now it looks like huge flames behind mountain silhouettes
|
|
2021-04-14 07:52:32
|
|
|
2021-04-14 07:53:26
|
Very different image depending on orientation imo
|
|
2021-04-14 07:53:34
|
๐ค
|
|
2021-04-14 07:54:12
|
Going for orientation 3
|
|
2021-04-14 07:54:48
|
data:image/jxl;base64,/wr6H1FQTAgGAQCAAEs4RLY57QHEIzXf+UFbWOLjDgmcf1Tg/OOtMQZJwgFc
|
|
2021-04-14 07:55:07
|
"Alien Bushfires"
|
|
|
Petr
|
|
_wb_
Now it looks like huge flames behind mountain silhouettes
|
|
2021-04-15 02:10:08
|
Polar lights?
|
|
|
_wb_
|
2021-04-15 05:16:36
|
Yes, that too
|
|
2021-04-15 09:40:37
|
data:image/jxl;base64,/wr6F9NATAgmAP0jgAUwAgDwAEs4Ijp3nmrJz1LyQwg0i74M3nhg1CzrimbRawsWEGYNholRckCz
6JtVL0aI05gFhgX3wINQBZ8FScIBAA==
|
|
2021-04-15 09:41:18
|
```
Bitdepth 8
Orientation 7
RCT 1
if y > 150
if c > 0
- N 0
if x > 500
if WGH > 5
- AvgN+NW + 2
- AvgN+NE - 2
if x > 470
- AvgW+NW -2
if WGH > 0
- AvgN+NW +1
- AvgN+NE - 1
if y > 136
if c > 0
if c > 1
if x > 500
- Set -20
- Set 40
if x > 501
- W - 1
- Set 150
if x > 500
- N + 5
- N - 15
if W > -50
- Weighted -1
- Set 320
```
|
|
2021-04-15 09:43:01
|
"Unusually Cloudy Desert Sunset, Part 1"
|
|
2021-04-15 09:43:36
|
|
|
|
|
veluca
|
|
_wb_
|
|
2021-04-15 09:46:00
|
ok, that's pretty surprisingly realistic...
|
|
|
_wb_
|
2021-04-15 09:46:49
|
data:image/jxl;base64,/wr6H9FATAgGAQDwAEs4Ijp3nmrJz1LyQwg0i74M3nhg1CzrimbRawsWEGYNholRckCz6JtVL0aI
05gFhgX3wINQBZ8FScIBAA==
|
|
2021-04-15 09:47:00
|
Same code as above but no crop
|
|
2021-04-15 09:49:01
|
"Unusually Cloudy Desert Sunset, Part 2: Aliens' Earth Simulator Revealed"
|
|
2021-04-15 09:49:28
|
|
|
|
|
veluca
|
2021-04-15 09:49:37
|
(I don't see the crop in the code above)
|
|
|
_wb_
|
2021-04-15 09:50:05
|
Yes I haven't made syntax for it yet, just manually recompile it with hardcoded cropping, lol
|
|
|
|
veluca
|
2021-04-15 09:50:11
|
ah ๐
|
|
2021-04-15 09:52:07
|
I have some old version of the gtk plugin that breaks badly on this image btw xD
|
|
|
_wb_
|
2021-04-15 09:53:24
|
Clamping is kind of important for these images, I am heavily using out-of-bounds values
|
|
2021-04-15 09:53:43
|
Orientation might also be broken in old versions
|
|
|
|
veluca
|
2021-04-15 09:55:05
|
I think this might be using the wrong stride
|
|
2021-04-15 09:55:13
|
(or maybe it is indeed orientation)
|
|
|
_wb_
|
2021-04-15 10:24:32
|
The hint of pyramids at the horizon is pretty cool imo
|
|
|
improver
|
2021-04-15 01:13:31
|
could one make that larger
|
|
2021-04-15 01:14:07
|
or not with current tooling
|
|
|
_wb_
|
2021-04-15 01:18:49
|
Group size is limited to 1024x1024 so that kind of limits what you can do in a valid bitstream
|
|
|
|
veluca
|
2021-04-15 01:31:52
|
well, we could upsample it, I guess xD
|
|
|
_wb_
|
2021-04-15 01:37:09
|
Can also spent bits or use clever tricks to do multi-group jxl art without boundary issues
|
|
2021-04-15 07:47:07
|
data:image/jxl;base64,/wr6GOjgaCgmCGa/6BcBPIARAFwBAABAAAQAC4CjbVuVYsvIULAKAFEIv2JAFLEYRfEOYRxhfoAI
qQEkn3W4b+piqIveY/kkD/3RLwdjfIAzC3y7o1EcCMmEF3p0TTmhiefnYhxhi+cHWiQzAGkgSTgA AwM=
|
|
2021-04-15 07:47:56
|
```
Bitdepth 10
Orientation 7
Width 2048
RCT 1
/* Chroma */
if c > 0 if c > 1
if g > 21 - Set -50
if x > 40
if W-WW > -1
- W -1
- W 0
- Set 300
if g > 21 if x > 0
- W - 2 - Set 1000
if x > 400
- W + 2
- Set -900
/* Luma */
if y > 80
/* Sky and mountains */
if g > 21
if x > 0
if WGH > 3
- AvgN+NW + 5
if NW-N > -500
- AvgN+NE - 5 - NW + 1 /* extend mountain */
/* init mountains */
if N > -6000
- N - 20
- Set -1000
/* Sea */
if x > 1015 - W -100
if WGH > 1 - AvgN+NW +2
- AvgN+NE -2
/* Randomness */
if W > -50
- Weighted -5 if g > 21
- Set 1400 - Set 500
```
|
|
|
fab
|
2021-04-15 07:47:58
|
how to read those where you copy those codes
|
|
2021-04-15 07:48:04
|
base64 etc
|
|
|
_wb_
|
2021-04-15 07:48:22
|
Copy paste it into address bar of chrome canary
|
|
2021-04-15 07:49:25
|
"Tropical Island Sunset"
|
|
2021-04-15 07:49:29
|
|
|
|
fab
|
2021-04-15 07:51:40
|
add in sneyers info art
|
|
|
_wb_
|
2021-04-15 07:52:49
|
Yes, I will eventually add the nicest ones there
|
|
2021-04-15 07:53:03
|
Tired of sunsets now
|
|
|
raysar
|
|
_wb_
|
|
2021-04-15 08:32:25
|
crash on xnviewMP nomacs and imagemagick ^^
|
|
|
_wb_
|
2021-04-15 08:35:55
|
Probably the orientation bug
|
|
2021-04-15 08:36:20
|
Will fix itself once they sync to latest
|
|
|
Pieter
|
2021-04-16 12:14:46
|
How do you enable jxl on chromium canary?
|
|
2021-04-16 12:14:54
|
Or is it only in chrome?
|
|
2021-04-16 12:20:23
|
Ah, found the flags. The snap "edge" build of chromium 91 doesn't have it yet, apparently.
|
|
|
Scope
|
2021-04-16 12:30:21
|
https://discord.com/channels/794206087879852103/803574970180829194/830826479662530610
|
|
|
Petr
|
|
_wb_
|
|
2021-04-16 05:13:32
|
Wow, this is probably the best piece of jxl-art I've seen! This is what makes you famous. ๐ ๐
|
|
|
_wb_
|
2021-04-16 02:06:07
|
Not very arty but just seeing what I can do on my phone:
|
|
2021-04-16 02:06:20
|
33 megapixel image
|
|
2021-04-16 02:07:07
|
data:image/jxl;base64,/wr6/+j/YSUSCAYBAPgAAABAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARA
AARAAARAAAQASzhEnMMyvSSHiov5vzh+DQsA0sXcfy0eVCdY/iMggniY/T/RAPs/ohHmf6Ih/v9E
YyAaZACABSAsAJAkHAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==
|
|
2021-04-16 02:07:56
|
160 bytes, but looks like it would be less when gzipped/brotli'd
|
|
2021-04-16 02:10:45
|
0.000038 bits per pixel
|
|
2021-04-16 02:15:13
|
A low quality (-quality 30) jpeg version of this is 2 megabyte or 0.5 bpp
|
|
|
HellMood
|
|
_wb_
data:image/jxl;base64,/wr6GOjgaCgmCGa/6BcBPIARAFwBAABAAAQAC4CjbVuVYsvIULAKAFEIv2JAFLEYRfEOYRxhfoAI
qQEkn3W4b+piqIveY/kkD/3RLwdjfIAzC3y7o1EcCMmEF3p0TTmhiefnYhxhi+cHWiQzAGkgSTgA AwM=
|
|
2021-04-16 04:12:22
|
how would i download this as JXL? The links seems messed up, what i get can't be opened with Squoosh for example
|
|
|
Pieter
|
|
HellMood
how would i download this as JXL? The links seems messed up, what i get can't be opened with Squoosh for example
|
|
2021-04-16 04:13:21
|
|
|
2021-04-16 04:13:38
|
(i used the command-line `base64` tool)
|
|
|
HellMood
|
|
Pieter
|
|
2021-04-16 04:14:02
|
https://squoosh.app/editor isnt able to load that ๐ฆ
|
|
|
spider-mario
|
2021-04-16 04:14:30
|
iirc, it needs an orientation fix that is in the internal jxl codebase
|
|
2021-04-16 04:14:38
|
should soon be reflected in the public repo
|
|
|
HellMood
|
2021-04-16 04:16:01
|
I'll wait then. I think that sunset image is another milestone in jxl art. Deserves spreading in demoscene~ish circles. But i want to give people something they can check themselves easily ๐
|
|
|
Pieter
|
2021-04-16 04:16:02
|
It works in `djxl`, but the orientation is wrong, and it fails to decode to png (it can decode to jpg).
|
|
|
|
Deleted User
|
2021-04-16 04:20:13
|
Works perfectly with Chrome Canary ๐
|
|
|
HellMood
|
2021-04-16 04:20:37
|
Okay, shared the twitter post for that image ๐ I like how google reverse search is like "did you mean sunset", that's a compliment ๐
|
|
|
_wb_
|
2021-04-16 04:45:50
|
Orientation handling was buggy until recently, for a long time we never produced oriented images so the bug went unnoticed
|
|
2021-04-16 04:48:09
|
data:image/jxl;base64,/wr6X0GRCAYBAGABAABAAARAAARAAARAAARAAAuAEwxViFIjH9lELZ3Ufp4qDghEeo47DNXGDzXJP7UaI5Jt18/+KCPuG+gvG8HVsCb9g8N8MntOyShnZTPR+qMdvoeP7/pZhK7tX9T7g/28HnhlSxIO4AIDAwMDAwMDAwM=
|
|
2021-04-16 04:48:49
|
```
Bitdepth 10
Width 3072
Height 3072
Orientation 1
RCT 15
if c > 0
if c > 1
if g > 21
if g > 22
if g > 23
if g > 24
if g > 25
if g > 26
if g > 27
if g > 28
- Set -127
- Set 383
- Set -255
- Set -511
- Set 0
- Set 511
- Set 255
- Set -383
- Set 127
if y > 0
- N -1
- Set 511
if N > -500
if WGH > 10
if g > 21
if g > 22
if g > 23
if g > 24
if g > 25
if g > 26
if g > 27
if g > 28
- AvgN+NW -1
- AvgAll -2
- AvgW+N -2
- AvgN+NW -2
- AvgAll -1
- AvgW+NW -2
- AvgW+NW -1
- AvgW+N -1
- AvgN+NE -1
- Weighted -1 - Set 1500
```
|
|
2021-04-16 04:49:24
|
"Flame generation study"
|
|
2021-04-16 04:49:30
|
|
|
2021-04-16 04:55:51
|
Or maybe again better oriented if I call it flames
|
|
2021-04-16 04:56:58
|
data:image/jxl;base64,/wr6X1FQTAgGAQBgAQAAQAAEQAAEQAAEQAAEQAALgBMMVYhSIx/ZRC2d1H6eKg4IRHqOOwzVxg81yT+1GiOSbdfP/igj7hvoLxvB1bAm/YPDfDJ7TskoZ2Uz0fqjHb6Hj+/6WYSu7V/U+4P9vB54ZUsSDuACAwMDAwMDAwMD
|
|
|
fab
|
2021-04-16 05:08:17
|
i'm converting to webp2
|
|
|
_wb_
|
2021-04-16 08:10:36
|
```
Bitdepth 10
Width 1024
Height 1024
Orientation 1
RCT 1
if c > 1
if x > 0
- W -1
- Set 511
if c > 0
if W > -1500
- Weighted -100
- Set 2500
if N > -800
if WGH > 10
- AvgW+N -2
- Weighted -1
- Set 1300
```
|
|
2021-04-16 08:11:24
|
data:image/jxl;base64,/wr6H0GRCAYBAJAASzglcne/WQlSGiGB45+Fd7v+/qjdR/iIw8AQD0WoFW2QJBwA
|
|
2021-04-16 08:11:48
|
"Inside the Flying Spaghetti Monster"
|
|
2021-04-16 08:12:17
|
|
|