|
raysar
|
2021-01-26 04:43:27
|
xnview mp don't support jxl create by imagemagick
but it have an build in jxl decoder and encoder :/
|
|
|
_wb_
|
2021-01-26 04:44:59
|
it probably uses an old version of jxl before the bitstream was frozen then
|
|
|
raysar
|
2021-01-26 04:48:21
|
yes, i will report it in the forum.
Who know graphic windows/android programs reading jxl?
|
|
2021-01-26 04:49:08
|
darktable don't support it now.
|
|
|
_wb_
|
2021-01-26 04:51:21
|
not much yet, but I guess we should get the libjxl api stable before opening issues in all the relevant software
|
|
2021-01-26 04:52:33
|
or we could open the issues already so they can start working on integration in a branch
|
|
2021-01-26 04:53:04
|
best to wait for stable libjxl api though before compiling with jxl support by default
|
|
|
raysar
|
2021-01-26 04:55:03
|
xnview mp use libJPEGXL.dll if i replace it with a more recent binary it will works. But i don't know who built it and where i can find it.
|
|
2021-01-26 05:01:41
|
When you speak about api, you speak about stability of parameters of the encoder? (i'm not a developer)
|
|
|
_wb_
|
2021-01-26 05:03:14
|
it's the way the library gets called: what functions you can call, in what form you get the result, etc
|
|
2021-01-26 05:03:31
|
if we change that, stuff breaks
|
|
|
raysar
|
2021-01-26 06:26:05
|
ImageGlass (windows) support jxl: https://imageglass.org/moon
|
|
2021-01-26 06:29:08
|
Nomacs (multiplateform) support jxl with an extension: https://www.reddit.com/r/jpegxl/comments/l4nwb2/how_to_view_jpeg_xl_images_in_nomacs_for_windows/
|
|
|
Dr. Taco
|
2021-01-27 06:20:36
|
https://caniuse.com/?search=jxl
|
|
|
Orum
|
2021-01-27 06:26:29
|
we've asked them to add it
|
|
|
_wb_
|
2021-01-27 06:27:09
|
https://github.com/Fyrd/caniuse/issues/5041
|
|
|
|
Deleted User
|
2021-01-28 11:11:51
|
https://github.com/rouault/gdal/tree/jxl is a work in progress to encapsulate jxl compressed tiles (usually 512x512) inside a TIF container
|
|
2021-01-28 11:15:16
|
I'm not sure if this is the place to ask, but https://github.com/rouault/gdal/commit/8aac52b8bc8a3c1a3d550822da4ec28a26eed760 had to be added as a workaround as JxlDecoderReleaseInput consistently returned a non zero amount of remaining bytes after JXL_DEC_FULL_IMAGE was returned.
|
|
|
|
lvandeve
|
2021-01-28 11:38:22
|
how could I reproduce this to try to investigate and fix?
|
|
|
|
Deleted User
|
2021-01-28 11:42:12
|
<@!768090355546587137> if you are willing to compile a gdal tree from that branch, reproducing should be straightforward
|
|
|
|
lvandeve
|
2021-01-28 11:43:18
|
does this happen on all images?
|
|
|
|
Deleted User
|
2021-01-28 11:43:25
|
yes
|
|
2021-01-28 11:44:16
|
well, it happens on all 16bit lossless ones. I haven't tried other configurations
|
|
|
|
lvandeve
|
2021-01-28 11:45:16
|
it can happen that release returns non-0 though, if bytes past the jxl file itself are given
|
|
2021-01-28 11:45:26
|
it should indicate that it's done with the JXL_DEC_SUCCESS status
|
|
2021-01-28 11:45:53
|
and any non-zero value that release returns then indicates how many bytes of the input have been consumed as jxl bytes, and which ones are the rest of the non-jxl contents around it
|
|
2021-01-28 11:47:00
|
JXL_DEC_FULL_IMAGE is not necessarily the last event returned, there could be more animation frames with more JXL_DEC_FULL_IMAGE in them. JXL_DEC_SUCCESS is the last event
|
|
|
|
Deleted User
|
2021-01-28 11:47:17
|
let me check, but that should not be the case. the input bytes should be the exact same bytes that were output by the jxl encoder, i.e. with no trailing bytes
|
|
2021-01-28 11:47:54
|
in this case, there is a single frame
|
|
|
|
lvandeve
|
2021-01-28 11:48:30
|
> JxlDecoderReleaseInput consistently returned a non zero amount of remaining bytes after JXL_DEC_FULL_IMAGE was returned
|
|
2021-01-28 11:48:49
|
If you try one more call to processinput, and it returns JXL_DEC_SUCCESS, does release still return a non-0 value then?
|
|
|
|
Deleted User
|
2021-01-28 11:49:21
|
give me a few minutes to try that out
|
|
2021-01-28 11:54:32
|
so the next call returns JXL_DEC_SUCCESS
|
|
2021-01-28 11:55:30
|
the remaining bytes returned by JxlDecoderReleaseInput is the exact size of the input buffer
|
|
|
_wb_
|
2021-01-28 12:18:45
|
I just created a <#804324493420920833> channel, maybe can continue discussion there?
|
|
2021-01-28 12:22:26
|
also feel free to put a link to your project in <#803663417881395200>, it is nice to keep track of the projects that are working on jxl support / integration ๐
|
|
|
|
lvandeve
|
2021-01-28 02:20:23
|
tbonfort, thanks! that may be a bug in that case. If everything else works correctly, you could ignore the return value from releaseinput once it returned JXL_DEC_SUCCESS for now
|
|
2021-01-28 02:20:53
|
<@456226577798135808>
|
|
2021-01-28 02:22:12
|
do you know if the images themselves are a pure JXL codestream, or have the JXL box format container around them?
|
|
|
|
Deleted User
|
2021-01-28 02:25:38
|
I have no idea. They where created by the encoder code here: https://github.com/rouault/gdal/blob/8aac52b8bc8a3c1a3d550822da4ec28a26eed760/gdal/frmts/gtiff/tif_jxl.c#L466
|
|
2021-01-28 02:26:34
|
(btw, lets move to <#804324493420920833> to avoid polluting <#803574970180829194>)
|
|
|
_wb_
|
2021-01-28 03:27:29
|
anyone want to try to get jxl working in libvips? https://github.com/libvips/libvips
|
|
2021-01-28 08:43:24
|
```
curl -sD - -H "Accept: image/jxl" https://res.cloudinary.com/jon/f_auto/sample.jpg
```
|
|
|
raysar
|
2021-01-29 03:50:23
|
The last windows binary 0.3 of jpegxl encoder/decoder is here: https://encode.su/threads/3544-JXL-reference-software-version-0-2-released?p=67989&viewfull=1#post67989
|
|
|
BlueSwordM
|
2021-01-29 06:58:55
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1539075
Someone is a bit impatient it seems. ๐
|
|
|
Jim
|
2021-01-29 07:05:58
|
People need to not do that or they will just lock the comments.
|
|
|
_wb_
|
2021-01-30 01:16:08
|
so, besides browsers, what should get jxl support?
|
|
|
Fox Wizard
|
2021-01-30 01:20:05
|
Think for most people browsers, default photo viewer apps on desktop and mobile and maybe camera apps would be enough. Having the option to take photos in jxl format would be nice, but not sure if that would be possible yet and if bigger companies want to add support for it
|
|
|
_wb_
|
2021-01-30 01:24:02
|
what viewer apps are people using where we can open issue to ask to add jxl support?
|
|
|
Fox Wizard
|
2021-01-30 01:24:04
|
Editing software support would also be very nice. Can't really think of anything else that would benefit from it
|
|
2021-01-30 01:24:32
|
Default Microsoft ``Photos`` app and mobile apps like ``Google Photos`` and other widely used apps (no idea what the most commonly used mobile gallery apps are)
|
|
2021-01-30 01:26:28
|
But not sure if that's achievable for the near future
|
|
|
Scope
|
2021-01-30 01:32:10
|
For Windows, as I said before it is also important support through WIC (Windows Imaging Component), not necessarily from Microsoft itself, it can be a third-party implementation as it was for FLIF <https://github.com/peirick/FlifWICCodec>
|
|
2021-01-30 01:45:31
|
XnView (some applications also use the XnView SDK for decoding)
<https://newsgroup.xnview.com/viewtopic.php?t=40709>
IrfanView
<https://irfanview-forum.de/showthread.php?t=12783>
|
|
|
|
Deleted User
|
|
_wb_
so, besides browsers, what should get jxl support?
|
|
2021-01-30 01:57:24
|
Image and file hosts (Imgur, Google Drive/Photos) are very important imo. Though my hopes for that are quite low. If you currently upload a Google WebP file to Google Photos, Google will display a PNG, JPEG or GIF depending on what the source is.
|
|
2021-01-30 01:59:33
|
Makes me wonder why Google even works on image formats like WebP, JXL, ... <:ugly:805106754668068868>
|
|
|
Image and file hosts (Imgur, Google Drive/Photos) are very important imo. Though my hopes for that are quite low. If you currently upload a Google WebP file to Google Photos, Google will display a PNG, JPEG or GIF depending on what the source is.
|
|
2021-01-30 02:04:29
|
But what happens if you try to download the original photo from Google's servers? I mean not for viewing, but for storage?
|
|
2021-01-30 02:06:47
|
This gives me the WebP back. But kind of useless using Photos for that if it can't display the actual file. So I currently just stick with Google Drive.
|
|
2021-01-30 02:08:25
|
Oh, and by the way: I'm working on JPEG XL support in Google Photos, just gonna type in some encouraging description and send feedback to them ๐
|
|
|
Fox Wizard
|
2021-01-30 02:08:58
|
Would be nice if it gets added
|
|
2021-01-30 02:09:50
|
If common apps support it then I could start using jpeg xl I guess since now the workarounds/having to download things isn't really worth it to me
|
|
|
|
Deleted User
|
2021-01-30 02:10:43
|
I was planning to upload all of my photos before June 1st (you know, the free tier apocalypse), but now I'm waiting with all of my photo uploads before they add JPEG XL support. I hope that they add it before June 1st, because otherwise I'm screwed.
|
|
|
Toggleton
|
2021-01-30 02:12:06
|
screenshot tools could be interesting
|
|
|
|
Deleted User
|
2021-01-30 02:12:11
|
I was the one that mentioned it on their subreddit:
https://www.reddit.com/r/googlephotos/comments/kkhnt9/jpeg_xls_bitstream_is_frozen_google_photos_can/
|
|
|
Fox Wizard
|
2021-01-30 02:13:54
|
``Furaffinity and othes can join in`` <:kekw:758892021191934033>
|
|
|
|
Deleted User
|
2021-01-30 02:17:42
|
I've been doing some tests: original JPG vs Guetzli JPG vs size-matched JXL (`--target-size` was *incredibly* helpful) and JXL's been winning
|
|
2021-01-30 02:18:53
|
I hope that Google Photos introduce `-s 9` JXL encoding in their free tier instead of Guetzli JPG (if you choose so in settings)
|
|
|
Jim
|
|
I was the one that mentioned it on their subreddit:
https://www.reddit.com/r/googlephotos/comments/kkhnt9/jpeg_xls_bitstream_is_frozen_google_photos_can/
|
|
2021-01-30 02:34:43
|
They also worked on AVIF, and pushed it way more in the beginning as browsers started to support it. The fervor has died down, but we have yet to see what Google plans to do as far as pushing AVIF over other formats. I personally don't like the excessive amount of smoothing it does. It may work well for videos (though, probably not for a while yet). Hardware vendors are not keen on adding AV1 encoding support yet likely due to the slow encoding speed. Some CDNs have given the "'I'll pass for now" on AVIF due to it's low performance as well. I feel if browsers and other image handling software starts implimenting JPEG XL soon, and most CDNs start adding it as an encoding option, we could see JPEG XL support start surpassing AVIF this year.
AVIF may have jumped out of the gate first, but keeping a steady pace (and balanced performance) is what wins the race.
|
|
|
_wb_
|
2021-01-30 02:41:43
|
JXL is made by Google Research (and also Cloudinary), which is not the same organization as Google Chrome.
|
|
2021-01-30 02:42:49
|
AVIF and WebP2 involve people in or closer to Google Chrome.
|
|
|
Skeebadoo
|
|
_wb_
what viewer apps are people using where we can open issue to ask to add jxl support?
|
|
2021-01-30 04:38:31
|
IrfanView definitely
|
|
2021-01-30 04:38:58
|
but it's one of these one man projects, so it's kind of like asking for a new feature in foobar2000 or calibre
|
|
2021-01-30 04:39:00
|
may happen, may not
|
|
|
spider-mario
|
2021-01-30 04:40:09
|
foobar2000 and calibre have plugin systems, though
|
|
2021-01-30 04:40:12
|
does IrfanView?
|
|
|
Skeebadoo
|
2021-01-30 04:40:25
|
Yeah, but I'm not sure if it includes format support too
|
|
2021-01-30 04:40:35
|
I think that's baked in
|
|
|
spider-mario
|
2021-01-30 04:40:52
|
e.g. foo_input_dvda
|
|
|
Skeebadoo
|
2021-01-30 04:41:26
|
https://www.irfanview.com/plugins.htm
|
|
2021-01-30 04:41:38
|
cursory check and yeah, it's possible to support a format via a plugin
|
|
|
_wb_
|
2021-01-30 04:42:34
|
If anyone feels like preparing a pull request for a viewer, that would be great (and I am sure you can get help here if you have api questions on the jxl side)
|
|
2021-01-30 04:42:59
|
Just opening an issue is also nice of course, and less work ๐
|
|
|
BlueSwordM
|
2021-01-30 04:46:38
|
So, I'm going to do a follow-up article on modern image encoders, and I need some more datasets for testing: https://chipsandcheese.com/2021/01/30/modern-data-compression-in-2021-part-1-a-simple-overview-on-the-art-of-image-encoding/
I already have the CLIC datasets for real life pictures, but I need some more varied datasets.
I would also like to have higher resolution datasets to test multi-threaded performance.
Any sources you can people can link me to?
|
|
|
_wb_
|
2021-01-30 05:02:48
|
The images <@111445179587624960> used in his lossless comparison are varied (a bit focused on non-photo though)
|
|
|
BlueSwordM
|
2021-01-30 05:14:39
|
Oh yeah, I had completely forgotten about that.
|
|
|
Scope
|
2021-01-30 05:24:48
|
Yes, because I wanted to minimize the "lab test sets" and keep the proportions closer to actual use (however, it also has different photo sets).
|
|
2021-01-30 05:25:52
|
Also, I originally wanted to add similar categories, but the difficulty is that I couldn't just post most of them (without permission) and they would also require manual selection and searching from various places or google results.
|
|
2021-01-30 05:29:56
|
In the reddit image sets, I simply took various popular subreddits with lots of lossless images and filtered out only the obvious ex-Jpeg or broken images (without any of my preferences)
|
|
|
|
Diamondragon
|
2021-01-31 01:19:47
|
Support in SumatraPDF would be nice if it could happen.
|
|
|
Nova Aurora
|
|
Fox Wizard
``Furaffinity and othes can join in`` <:kekw:758892021191934033>
|
|
2021-01-31 01:27:07
|
Hey, when they said they were making a codec for all usage, they were *making a codec for all uses*
|
|
|
Fox Wizard
|
|
Crixis
|
2021-02-02 03:19:51
|
For ubuntu there is a viewer now?
|
|
2021-02-02 03:20:37
|
KDE make me sad
|
|
|
Nova Aurora
|
2021-02-02 03:21:39
|
You no like KDE?
|
|
2021-02-02 03:21:53
|
๐ข
|
|
|
_wb_
|
2021-02-02 03:21:58
|
No idea, has someone got it to work with eog maybe?
|
|
|
Crixis
|
2021-02-02 03:22:38
|
yep, i feel it so clunky and i'm all on dinamic workspace
|
|
|
_wb_
No idea, has someone got it to work with eog maybe?
|
|
2021-02-02 03:23:01
|
I have tryed whitout success
|
|
2021-02-02 03:23:50
|
i will try wine nomacs XD
|
|
2021-02-02 03:24:21
|
no, too sad, i will only install a qt viewer
|
|
|
Nova Aurora
|
2021-02-02 03:24:48
|
I use qview for general use
|
|
2021-02-02 03:25:23
|
gwenview is ok I guess, it feels a little too cluttered by default
|
|
|
Crixis
|
|
Nova Aurora
gwenview is ok I guess, it feels a little too cluttered by default
|
|
2021-02-02 03:26:01
|
yep, I will try qview
|
|
|
Master Of Zen
|
|
Crixis
yep, I will try qview
|
|
2021-02-02 03:42:41
|
This is how my gwenview looks like
|
|
2021-02-02 03:44:09
|
disabling/hiding is just an setting option
|
|
|
Nova Aurora
|
2021-02-02 03:46:01
|
how I like it:
|
|
|
Crixis
|
2021-02-02 03:47:37
|
So many settings on kde, i have tryed but no dynamic workspace and bad Google drive and proprietary driver management don't make me invest time
|
|
|
Nova Aurora
how I like it:
|
|
2021-02-02 03:48:19
|
Easy and integrable, I like
|
|
|
Nova Aurora
|
2021-02-02 03:50:35
|
I'm still a noob with KDE customIzation
|
|
2021-02-02 03:51:21
|
for example I still don't know why I can't use transparency as a window background
|
|
|
|
veluca
|
2021-02-02 04:17:38
|
the jpeg-xl repo has a gdk-pixbuf plugin, that should make it work for both thumbnails and say eog
|
|
|
Crixis
|
|
veluca
the jpeg-xl repo has a gdk-pixbuf plugin, that should make it work for both thumbnails and say eog
|
|
2021-02-02 04:45:54
|
I failed on compile it
|
|
|
|
veluca
|
2021-02-02 05:18:12
|
how did it fail?
|
|
|
Crixis
|
2021-02-02 05:23:50
|
I made quite a mess, i will do another try in the future
|
|
|
diskorduser
|
2021-02-03 07:13:51
|
Ha Ha. KDE best.
|
|
|
Crixis
|
2021-02-03 01:19:46
|
What about a javascript implementation of the decoder? I wonder possible speed and memory use
|
|
|
_wb_
|
2021-02-03 01:30:01
|
squoosh.app basically does that
|
|
2021-02-03 01:30:27
|
counting wasm as a form of js here
|
|
|
|
Deleted User
|
2021-02-03 01:36:53
|
Guys, I know it's not much but I'm offering 20$ for an IrfanView JpegXL plugin. Others can chip in!
|
|
|
_wb_
|
2021-02-03 01:42:10
|
ooo do we need to start a Bounty Hunting channel?
|
|
|
|
Deleted User
|
2021-02-03 01:44:50
|
I think it would be a good ideea
|
|
|
_wb_
|
2021-02-03 01:52:08
|
ok, bounties can be announced in <#806522208692207617> now
|
|
2021-02-03 01:55:54
|
for those who don't know, <@!228116142185512960> and <@!710762823986446367> are the main devs of https://squoosh.app/
|
|
|
surma
|
2021-02-03 01:56:36
|
We need to update to v0.3! Havenโt done that yet I think
|
|
|
|
veluca
|
2021-02-03 01:56:51
|
I can help with that ๐
|
|
|
surma
|
2021-02-03 01:57:31
|
๐ That would be appreciated
|
|
|
Crixis
|
2021-02-03 02:08:26
|
Wasm is an hack
|
|
2021-02-03 02:09:26
|
A good hack
|
|
2021-02-03 02:10:06
|
I was not thinking about squoosh cli
|
|
2021-02-03 02:11:07
|
I wonder about the possibility of an flutter viewer
|
|
|
blabaal
|
2021-02-03 02:12:23
|
Are you maybe thinking about asm.js? Wasm is pretty good
|
|
|
Crixis
|
2021-02-03 02:13:07
|
I have undervalued wasm portability
|
|
|
|
veluca
|
|
surma
๐ That would be appreciated
|
|
2021-02-03 02:40:18
|
I'll do that after 0.3.1 is out (should be later today)
|
|
|
Crixis
|
2021-02-03 02:40:57
|
On squoosh effort is -s?
|
|
|
surma
|
2021-02-03 02:41:05
|
Yeah, wasm is definitely not a hack ๐
|
|
2021-02-03 02:41:13
|
<@!424295816929345538> do you mean the Squoosh CLI? Then no
|
|
2021-02-03 02:41:28
|
Iโd recommend using squoosh.app to configure the encoder and then click the โcopy CLI commandโ button
|
|
2021-02-03 02:41:37
|
the CLi is fairly undocumented. We wanna fix that soon
|
|
|
Crixis
|
|
Crixis
On squoosh effort is -s?
|
|
2021-02-03 02:42:31
|
On squoosh app
|
|
2021-02-03 02:43:58
|
I think quality is -q, true?
|
|
|
_wb_
|
2021-02-03 02:45:01
|
`cjxl -s N` is squoosh effort `N-3`, I think
|
|
2021-02-03 02:45:35
|
we should probably rename the cjxl option to "effort" too, it makes more sense
|
|
|
|
veluca
|
2021-02-03 02:46:17
|
--effort <number> or --speed <animal>
|
|
|
Master Of Zen
|
2021-02-03 02:47:27
|
What make no sense whatsoever is VP9/AV1 `cpu-used`
|
|
2021-02-03 02:47:53
|
and that for VP9 it can go `-16 - +16`
|
|
|
Crixis
|
2021-02-03 02:48:57
|
Lol on my firefox crash on effort 5
|
|
|
_wb_
|
2021-02-03 02:50:48
|
`cpu-used` is higher-is-faster, right?
|
|
|
Crixis
|
|
|
veluca
|
2021-02-03 02:53:24
|
that seems a bit backwards
|
|
|
Scope
|
2021-02-03 02:54:57
|
--speed <animal> is cool, but not very practical, there is a need to remember the names of animals and it may limit the difference in speed, since it should roughly correspond to the speed of animals
|
|
|
Crixis
|
|
Scope
--speed <animal> is cool, but not very practical, there is a need to remember the names of animals and it may limit the difference in speed, since it should roughly correspond to the speed of animals
|
|
2021-02-03 02:55:53
|
Not a problem If there is a --effort number
|
|
|
Scope
|
2021-02-03 02:56:11
|
Yep, --effort <number> is more logical and easy to use (including scripts, GUIs, etc.), --speed <number> (which is now) it is not always clear which value is faster/more efficient
|
|
|
_wb_
|
2021-02-03 03:03:00
|
just like we have `--quality` and `--distance` which are just two different ways/scales to set the same thing (quality is higher = better, distance is lower = better), we could have `--effort` and `--speed` which are two different ways to set the same thing (effort is higher = slower, speed is higher = faster). Could still allow numbers for speed, and also come up with some metaphorical strings for effort, e.g. `-e herculean` etc ๐
|
|
|
Master Of Zen
|
2021-02-03 03:04:48
|
rav1e have `speed` and svt-av1 have `preset`
|
|
|
_wb_
|
2021-02-03 03:05:29
|
is rav1e's `speed` higher = faster?
|
|
|
Master Of Zen
|
|
_wb_
is rav1e's `speed` higher = faster?
|
|
2021-02-03 03:05:44
|
yep, it make sense)
|
|
|
Crixis
|
2021-02-03 03:10:38
|
Just make a not configurable encoder that automatically convert all image of the pc and delete olds, immediate jxl adoption
|
|
|
_wb_
|
2021-02-03 03:18:22
|
haha adoption by force
|
|
|
|
Deleted User
|
|
_wb_
haha adoption by force
|
|
2021-02-03 03:31:01
|
systemd-cjxl
|
|
|
Moritz Firsching
|
|
Crixis
I made quite a mess, i will do another try in the future
|
|
2021-02-03 03:31:12
|
let me know if I can help to get that working...
|
|
|
Crixis
|
|
Moritz Firsching
let me know if I can help to get that working...
|
|
2021-02-03 03:31:51
|
I will try tomorrow
|
|
2021-02-03 03:32:44
|
now i don't have my pc
|
|
|
Moritz Firsching
|
2021-02-03 03:32:52
|
anytime..
|
|
|
Dr. Taco
|
2021-02-04 12:43:45
|
Waiting on this page to inlcude JXL ๐ https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
|
|
|
190n
|
2021-02-04 12:47:46
|
bit pointless if no browsers support it
|
|
|
Jim
|
2021-02-04 12:54:58
|
> The older formats like PNG, JPEG, GIF have poor performance compared to newer formats like WebP and AVIF, but enjoy broader "historical" browser support.
|
|
2021-02-04 12:55:28
|
Should probably change that to "poor visual performance," since the new formats are actually poorer [speed] performance than the old formats.
|
|
|
Crixis
|
2021-02-04 09:16:15
|
I have build jpegxl pixbuff plugin on ubuntu 20.10 and jxl is now listed on /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders there are other steps?
|
|
2021-02-04 09:23:03
|
<@!795684063032901642>
|
|
|
spider-mario
|
|
Crixis
I have build jpegxl pixbuff plugin on ubuntu 20.10 and jxl is now listed on /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders there are other steps?
|
|
2021-02-04 09:23:18
|
possibly `update-mime-database`
|
|
|
Crixis
|
2021-02-04 09:28:16
|
damn i have a problem with krita
update-desktop-database
Error in file "/usr/share/applications/krita_jpeg.desktop": "jpeg/jfif" is an invalid MIME type ("jpeg" is an unregistered media type)
The databases in [/usr/share/ubuntu/applications, /usr/local/share/applications, /usr/share/applications, /var/lib/snapd/desktop/applications] could not be updated.
|
|
2021-02-04 09:32:30
|
ok i have removed krita and updated mime-database
|
|
2021-02-04 09:32:33
|
now?
|
|
|
|
veluca
|
2021-02-04 10:39:23
|
probably `gdk-pixbuf-query-loaders`
|
|
2021-02-04 10:39:39
|
or `gdk-pixbuf-queryloaders`
|
|
2021-02-04 10:41:13
|
`sudo /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache` apparently
|
|
2021-02-04 10:41:43
|
... ignore me, I didn't see that you did it already
|
|
2021-02-04 10:42:05
|
it should work at this point I guess
|
|
|
Crixis
|
2021-02-04 11:10:51
|
I have did it
|
|
2021-02-04 11:13:37
|
but it don't work
|
|
2021-02-04 11:13:54
|
|
|
|
|
veluca
|
2021-02-04 11:15:48
|
so you confirm you ran that, not just that `/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders` shows jxl?
|
|
|
Crixis
|
2021-02-04 11:23:46
|
no wait
|
|
2021-02-04 11:25:10
|
i run ` sudo /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache ` yes, no output on it
|
|
|
|
veluca
|
2021-02-04 11:26:37
|
ok, and then it still doesn't work?
|
|
|
Crixis
|
2021-02-04 11:29:12
|
yep, it don't work
|
|
|
|
veluca
|
2021-02-04 11:30:30
|
maybe you need to install some xml somewhere, let me check...
|
|
2021-02-04 11:33:10
|
I remember I got it to work at some point in the distant past
|
|
2021-02-04 11:35:29
|
one thing you likely need is `sudo xdg-mime install --novendor plugins/mime/image-jxl.xml`
|
|
2021-02-04 11:35:45
|
unless the build system does that already
|
|
2021-02-04 11:36:06
|
also, can you run `ldd` on the installed loader?
|
|
|
Crixis
|
|
veluca
also, can you run `ldd` on the installed loader?
|
|
2021-02-04 11:36:44
|
can you be more specific?
|
|
|
|
veluca
|
2021-02-04 11:37:25
|
`ldd /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jxl.so`
|
|
|
Crixis
|
2021-02-04 11:38:38
|
` ldd /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jxl.so
linux-vdso.so.1 (0x00007ffcc1581000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fae505ed000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fae505e7000)
libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007fae505c0000)
libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fae50565000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fae50433000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fae50252000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fae50235000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fae50213000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fae50029000)
/lib64/ld-linux-x86-64.so.2 (0x00007fae50cfa000)
libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fae50023000)
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fae4fe3c000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fae4fe30000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fae4fdbb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fae4fd9e000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fae4fd40000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fae4fd15000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fae4fcfa000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fae4fca5000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fae4fc15000)
`
|
|
|
|
veluca
|
2021-02-04 11:40:27
|
doesn't seem to have broken deps, so that's good.
|
|
2021-02-04 11:40:57
|
did you try updating again the mime type info after xdg-mime?
|
|
|
Crixis
|
|
veluca
one thing you likely need is `sudo xdg-mime install --novendor plugins/mime/image-jxl.xml`
|
|
2021-02-04 11:42:52
|
it did the trick!
|
|
|
|
veluca
|
2021-02-04 11:43:32
|
great! maybe we should add instructions...
|
|
|
Crixis
|
2021-02-04 11:55:18
|
`
sudo apt install cmake pkg-config libbrotli-dev
sudo apt install libgif-dev libjpeg-dev libopenexr-dev libpng-dev libwebp-dev git libgdk-pixbuf2.0-dev
sudo apt install clang-11
export CC=clang-11 CXX=clang++-11
git clone https://gitlab.com/wg1/jpeg-xl.git --recursive
cd jpeg-xl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_PLUGINS=ON ..
cmake --build . -- -j
sudo cmake --install .
sudo /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache
sudo update-desktop-database
cd ..
sudo xdg-mime install --novendor plugins/mime/image-jxl.xml
`
|
|
|
Moritz Firsching
|
2021-02-04 11:55:46
|
cool!
|
|
|
Crixis
|
|
Moritz Firsching
|
2021-02-04 11:56:12
|
So thumbnails in file browsers work and also viewing with eog?
|
|
|
Crixis
|
|
Moritz Firsching
So thumbnails in file browsers work and also viewing with eog?
|
|
2021-02-04 11:57:24
|
yep
|
|
2021-02-04 11:58:38
|
|
|
|
Moritz Firsching
|
2021-02-04 12:00:26
|
if some thumbnails still give you trouble, then possibly delete the thumbnail cache with rm -r ~/.cache/thumbnails and restart the application displaying thumbnails, e.g. nautilus -q to display thumbnails.
|
|
|
Crixis
|
2021-02-04 12:20:26
|
also desktop wallpaper work
|
|
|
_wb_
|
2021-02-05 09:35:16
|
This URL gives you different results depending on what codecs you claim to support in your `Accept` header: https://res.cloudinary.com/jon/f_auto/sample
|
|
2021-02-05 09:36:41
|
It currently returns a jpeg by default, a webp if you accept that, and a jxl if you have `Accept: image/jxl`
|
|
|
Nova Aurora
|
2021-02-05 09:39:04
|
So once we get browser support, it will give a jxl?
|
|
|
_wb_
|
2021-02-05 09:39:14
|
Yes
|
|
2021-02-05 09:42:38
|
Now already, if you manually fetch the image with the right http header:
```
curl -sD - -H "Accept: image/jxl" https://res.cloudinary.com/jon/f_auto/sample
HTTP/2 200
content-type: image/jxl
etag: "b376d12f595c5e8802f0ce5a2ef12679"
last-modified: Thu, 28 Jan 2021 19:34:05 GMT
date: Thu, 28 Jan 2021 19:34:16 GMT
vary: Accept,User-Agent
strict-transport-security: max-age=604800
cache-control: private, no-transform, immutable, max-age=2592000
server-timing: fastly;dur=221;cpu=116;start=2021-01-28T19:34:16.218Z;desc=miss,rtt;dur=19,cloudinary;dur=27;start=2021-01-28T19:34:16.371Z
server: Cloudinary
timing-allow-origin: *
access-control-allow-origin: *
accept-ranges: bytes
x-content-type-options: nosniff
access-control-expose-headers: Content-Length,ETag,Server-Timing,Vary,X-Content-Type-Options
content-length: 47383
```
|
|
2021-02-05 09:45:08
|
Currently 900k web developers are using Cloudinary, most of which just use the free service, and a bit under 1% being a paying customer, most of those with very substantial traffic.
|
|
2021-02-05 09:45:29
|
Many of them are using `f_auto` already.
|
|
2021-02-05 09:49:27
|
Currently only the `jon` and `demo` accounts have jxl activated as a target codec for `f_auto`. We can pull the global switch when the first major browser adds support and we have verified that it works properly.
|
|
|
Moritz Firsching
|
2021-02-06 07:07:54
|
Another simple way of serving jxl to browsers that support it (working on it..) is the following:
<picture>
<source srcset="image.jxl" type="image/jxl">
<source srcset="image.jpg" type="image/jpeg">
<img alt="jxl or jpeg depending on what your browser supports" src="image.jpg">
</picture>
|
|
|
_wb_
|
2021-02-06 07:11:19
|
Yes, that also works, at least if you can change the markup.
|
|
2021-02-06 07:13:01
|
I like the elegance of a single img tag with a server that varies response based on Accept header and Client Hints. That is a better way to avoid combinatorial explosion.
|
|
2021-02-06 07:14:56
|
Because it's not just format, also dimensions you may want to vary based on viewport width, quality target you may want to vary based on the `save-data` client hint, maybe in the future HDR or not based on some new client hint.
|
|
2021-02-06 07:15:51
|
Putting the cartesian product of all those things in the markup gets heavy quickly...
|
|
|
|
Deleted User
|
2021-02-06 09:17:44
|
BTW that second `<source>` is redundant because it's already covered by the `<img>`.
|
|
|
Scope
|
2021-02-06 09:32:20
|
Yep or change jpeg with webp or avif (but in the future if the percentage of JXL support in browsers is significant, I think it will be possible to leave only JXL with on-the-fly conversion to legacy Jpeg)
```<picture>
<source srcset="image.jxl" type="image/jxl">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Image">
</picture>```
|
|
|
|
Deleted User
|
2021-02-07 12:09:05
|
Unless we are talking about lossless or have the need for alpha, then JPEG should be preferred over WebP.
|
|
|
BlueSwordM
|
|
Unless we are talking about lossless or have the need for alpha, then JPEG should be preferred over WebP.
|
|
2021-02-07 12:20:27
|
I mean, if 4:4:4 operation was supported in lossy WebP, I would actually use it.
|
|
2021-02-07 12:20:33
|
Sadly, it does not. <:AngryCry:805396146322145301>
|
|
|
_wb_
|
2021-02-07 08:13:00
|
Adoption is a weird thing
|
|
2021-02-07 08:14:55
|
Progressive JPEG was not supported in early versions of libjpeg, so in the first 10 years of the web, progressive JPEG was not really used.
|
|
2021-02-07 08:17:13
|
The fact that progressive was rarely used was then later used as 'evidence' that progressive is a bad idea and not needed, to justify WebP not supporting it.
|
|
|
lonjil
|
|
lithium
|
2021-02-07 08:29:12
|
In my opinion, webp near-lossless and lossless is very well,
only webp lossy have problem.
|
|
|
_wb_
|
2021-02-07 08:33:18
|
WebP lossy was a quick hack to get more benefit out of the WebM/VP8 decoder that was available anyway.
|
|
2021-02-07 08:33:42
|
WebP lossless was added later and was actually conceived as a still image codec
|
|
|
lithium
|
2021-02-07 08:34:14
|
vp8 and vp8l
|
|
|
_wb_
|
2021-02-07 08:35:31
|
Except it replicated some VP8 limitations like max image dimensions, only 8-bit, and no progressive
|
|
2021-02-07 08:36:57
|
Lossless webp is somewhere in between PNG and JXL in terms of sophistication, implementation complexity, single-core decode speed, and density results.
|
|
|
lithium
|
2021-02-07 08:40:16
|
near-lossless webp can compare which jpeg xl mode?
|
|
|
_wb_
|
2021-02-07 08:46:12
|
`cjxl -m --lossy_palette --palette 0 --P 0` does something similar, but it is still experimental and can be improved.
|
|
|
Jim
|
2021-02-07 12:28:02
|
I remember early progressive jpgs almost always led to a larger file size and people avoided using it. Not the case today.
|
|
|
_wb_
|
2021-02-07 01:08:35
|
I think early libjpeg also just refused to decode it, so that also doesn't help
|
|
|
VEG
|
2021-02-07 02:03:22
|
Didn't know that progressive JPEG wasn't supported in early days of JPEG in web.
|
|
2021-02-07 02:03:33
|
When it was? I guess IE6 already supported it, right?
|
|
2021-02-07 02:04:47
|
Arithmetic coded JPEGs are refused to decode by 95% of software even today.
|
|
2021-02-07 02:05:11
|
Even though all the related patents are expired for 10 years or so.
|
|
|
_wb_
|
2021-02-07 02:08:51
|
https://en.wikipedia.org/wiki/Libjpeg#History
|
|
|
VEG
|
2021-02-07 02:09:24
|
So, 1995 ๐
|
|
|
_wb_
|
2021-02-07 02:09:26
|
progressive was added in version 6, released in august 1995
|
|
|
VEG
|
2021-02-07 02:09:42
|
I was playing NES and even didn't dream about a computer those days ๐
|
|
|
_wb_
|
2021-02-07 02:10:14
|
I don't know at what point browsers added support for progressive
|
|
|
VEG
|
2021-02-07 02:10:42
|
I remember that IE6 had issues with PNG alpha channel
|
|
2021-02-07 02:11:12
|
But OK, it is about some really ancient days of web anyway
|
|
2021-02-07 02:11:44
|
Before JPEG XL was a thing, I tried to persuade Chromium developers to support JPEG's arithmetic coding
|
|
2021-02-07 02:12:08
|
https://bugs.chromium.org/p/chromium/issues/detail?id=669501
|
|
|
_wb_
|
2021-02-07 02:12:09
|
https://www.thewebmaster.com/dev/2016/feb/10/how-progressive-jpegs-can-speed-up-your-website/#:~:text=Progressive%20JPEG%20Browser%20Support,Internet%20Explorer%208%20and%20below.
|
|
|
VEG
|
2021-02-07 02:12:27
|
I'm so happy that JPEG XL does what I wanted (lossless compression of old JPEGs) and even better ๐
|
|
|
_wb_
|
2021-02-07 02:12:33
|
this one says IE8 and below had significant issues with progressive JPEGs
|
|
2021-02-07 02:13:47
|
so that's not _that_ early
|
|
|
VEG
|
2021-02-07 02:15:16
|
As far as I understand, progressive JPEG was displayed properly, but without being "progressive".
|
|
|
_wb_
|
2021-02-07 02:15:18
|
back in 2011, IE8 had still like 60% market share
|
|
|
VEG
|
2021-02-07 02:15:26
|
So it wasn't that crucial ๐
|
|
|
_wb_
|
2021-02-07 02:15:48
|
I guess not, but that was probably a worse experience than sequential, which would at least render top to bottom
|
|
2021-02-07 02:16:55
|
That and some ancient browsers probably not even supporting progressive at all...
|
|
2021-02-07 02:17:20
|
I understand now why progressive JPEG didn't get more adoption
|
|
2021-02-07 02:17:51
|
I always assumed it was just laziness of web devs using default cjpeg / ImageMagick convert settings, which are sequential
|
|
2021-02-07 02:19:32
|
but there were actually good reasons to avoid it โ in the first 3 years of images on the web, it didn't work anywhere (as in there were no available implementations that could encode or decode a progressive jpeg), and after that probably still didn't work for a long time in many browsers, certainly not actually loading progressively
|
|
|
VEG
|
2021-02-07 02:20:19
|
BTW, does JPEG XL have non-progressive mode which allows to save a bit more space? It is useful for the cases when small images are embedded into CSS using data urls.
|
|
|
|
Deleted User
|
|
VEG
I'm so happy that JPEG XL does what I wanted (lossless compression of old JPEGs) and even better ๐
|
|
2021-02-07 02:22:08
|
If your JPEGs are high quality (90+ and 4:4:4) I would try doing jpg --ll--> jxl --ll--> png --lossy--> jxl. This resulted in an even smaller JXL with no visible degradation.
|
|
|
_wb_
|
2021-02-07 02:25:40
|
you can also just do `cjxl -j input.jpg output.jxl` if you want to treat the jpeg as input pixels
|
|
2021-02-07 02:27:32
|
cjxl does non-progressive for lossless by default, for lossy modular (with squeeze) it has to be progressive because it just inherently is progressive, lossy VarDCT (the main mode) is by default not very progressive: DC is sent first (sequentially), then all AC is sent (sequentially). Still gives you a nice 1:8 preview progressively, but that's it.
|
|
|
VEG
|
2021-02-07 02:28:25
|
Thanks for clarification.
|
|
|
_wb_
|
2021-02-07 02:28:53
|
DC can also be sent progressively (`--progressive_dc=1`) for 1:16, 1:32 etc previews, and AC can be sent progressively (`--progressive_ac`) for 1:4 and 1:2 previews, and if you use `-p` (`--progressive`) it does both of those things.
|
|
2021-02-07 02:29:52
|
There is no way to go "even more non-progressive" than default VarDCT, and it wouldn't help for density if we would add that, in fact it would probably hurt.
|
|
|
|
Deleted User
|
|
_wb_
you can also just do `cjxl -j input.jpg output.jxl` if you want to treat the jpeg as input pixels
|
|
2021-02-07 02:39:25
|
Yes, but it doesn't look as nice.
|
|
|
_wb_
|
2021-02-07 05:51:08
|
https://twitter.com/HenriHelvetica/status/1358459440773611520?s=19
|
|
2021-02-07 08:07:14
|
Any updates on chrome integration?
|
|
|
VEG
|
2021-02-07 11:13:58
|
Are here Chromium developers?
|
|
2021-02-07 11:17:40
|
I was following the ticket related to adding APNG support to Chromium. As far as I remember, it was at least for half a year in code review (with a lot of changes during this time) before merging. So I wouldn't expect that JPEG XL support will arrive soon if the developers didn't promise it ๐
|
|
|
Scope
|
2021-02-08 02:07:29
|
https://discord.com/channels/794206087879852103/803663417881395200/808141830805651478
Hmm, it seems to be from the developers of this application (but it requires VS and Inno to compile and install the WIC decoder) <:SadCat:805389277247701002> <https://store.steampowered.com/app/228180/Action__Gameplay_Recording_and_Streaming/>
|
|
2021-02-08 02:08:55
|
<:PepeOK:805388754545934396>
|
|
|
|
Deleted User
|
|
Scope
https://discord.com/channels/794206087879852103/803663417881395200/808141830805651478
Hmm, it seems to be from the developers of this application (but it requires VS and Inno to compile and install the WIC decoder) <:SadCat:805389277247701002> <https://store.steampowered.com/app/228180/Action__Gameplay_Recording_and_Streaming/>
|
|
2021-02-08 07:07:25
|
That application looks cool ๐
|
|
|
Crixis
|
2021-02-08 08:57:30
|
Pixbuf work in linux mint!
|
|
|
Troc
|
2021-02-08 05:13:10
|
Ultra File Viewer Pro on Windows store says that it can view any file. I'll see if it can view jxl.
|
|
2021-02-08 05:15:46
|
Hmm, nice avif picture.
|
|
|
Nova Aurora
|
2021-02-08 05:19:35
|
it displayed it
|
|
2021-02-08 05:19:43
|
in hex
|
|
2021-02-08 05:19:50
|
but it displayed it
|
|
2021-02-08 05:21:36
|
?
|
|
|
Troc
|
2021-02-08 05:22:20
|
JXL made error first but then gave me this:
|
|
2021-02-08 05:22:21
|
It does seem to work.
|
|
|
Nova Aurora
|
2021-02-08 05:22:33
|
interesting
|
|
|
Troc
|
2021-02-08 05:22:51
|
"Any file format" might not be marketing only.
|
|
2021-02-08 05:23:30
|
Though oof, it does crash on this file format a lot.
|
|
|
Scope
|
|
Troc
|
2021-02-08 05:26:23
|
The filename is jpg since that's what Megapixel outputs.
|
|
2021-02-08 05:26:52
|
On Honeyview, I only get this.
|
|
2021-02-08 05:28:43
|
Here's something interesting: When I alias the .avif file into PNG, it opens as a picture. When I don't, it opens as hex.
|
|
|
Nova Aurora
|
2021-02-08 05:28:54
|
?
|
|
2021-02-08 05:29:20
|
Is it just using imagemagick then using a whitelist of formats?
|
|
|
Troc
|
2021-02-08 05:30:03
|
I don't know.
|
|
2021-02-08 05:31:29
|
It does use 7% CPU and 160 Mb of RAM to display one picture, though.
|
|
2021-02-08 05:35:11
|
If I zoom in too close, the side scroll bar becomes unusable, as it just stops in the middle of the picture.
|
|
2021-02-08 05:36:28
|
Then when scrolling back down and up again, the picture has a white bar and the the program crashes.
|
|
2021-02-08 05:36:49
|
Overall, I'm not impressed by the experience. The lack of zooming using mouse wheel is also a big turnoff.
|
|
2021-02-08 05:49:00
|
I wonder if there's a better way out there.
|
|
2021-02-11 10:40:35
|
|
|
2021-02-11 10:40:49
|
Diplomatic response.
|
|
|
|
Deleted User
|
2021-02-13 02:08:00
|
Ok, things are probably getting serious in Chromium. After some time the old issue 1056172 has been closed and merged into issue 1178058:
https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c2
|
|
2021-02-13 02:09:27
|
Not only that, but also the priority: the old issue had priority 3 and the new one has priority 1! ๐
|
|
2021-02-13 02:11:02
|
Make sure to star the new (linked) issue in order to receive notifications about it and support by showing interest!
|
|
|
Scope
|
|
|
Deleted User
|
2021-02-13 02:25:50
|
So Chrome 91, I guess? ๐
|
|
2021-02-13 02:26:04
|
it will come soonโข๏ธ
|
|
2021-02-13 02:26:31
|
I definitely hope so
|
|
2021-02-13 02:27:32
|
If it starts working in Chrome, then I'll *finally* submit my request to Google Photos to support JPEG XL, too
|
|
2021-02-13 02:28:08
|
looks like decoding support is gradually rolling in, wondering when encoder support from important software will come in
|
|
2021-02-13 02:28:32
|
Chrome is most important IMHO
|
|
2021-02-13 02:28:38
|
Of course
|
|
2021-02-13 02:29:36
|
It would be nasty for Google Photos devs to try adding support to this format and not even knowing if it works at all
|
|
2021-02-13 02:30:48
|
I first planned to submit my request to Google Photos team quickly, but it seems like fortunately my procrastination found actually better and safer solution
|
|
2021-02-13 02:31:47
|
Iโโm just imagining an option for jpeg xl in google photos that automatically converts your entire library to it losslessly to save space
or if it seamlessly encodes it to jxl and back to the userโs choice.. that would be a more compatible alternative
of course these would be very bold moves
|
|
2021-02-13 02:32:47
|
Ohhhh yeeeeaaaah
|
|
2021-02-13 02:33:11
|
**Guetzli-encoded JPEGs:** JPEG lossless transcode
|
|
2021-02-13 02:33:55
|
**Newly uploaded files:** JXL lossy transcode with a pre-set Butteraugli distance (remember, we're *finally* setting a *visual* target, not *technical* one!)
|
|
2021-02-13 02:34:19
|
Oh ironically just supporting those might be a better idea than pngs since you couldnโt necessarily get the *exact* same filesize back
|
|
2021-02-13 02:35:22
|
wait wait if itโs a lossless transcode why would you need a visual target
|
|
|
BlueSwordM
|
2021-02-13 02:35:26
|
Better yet.
|
|
2021-02-13 02:35:40
|
Next Google phone uses JXL to take pictures as a non default mode.
|
|
2021-02-13 02:36:04
|
No more crappy techniques to get HDR stuff in JPG, crushing picture quality and true dynamic range, etc.
|
|
|
|
Deleted User
|
2021-02-13 02:37:09
|
<@456226577798135808> lossless transcode only for already existing JPEGs, since Guetzli is already pretty lossy, I don't want any more additional loss. Lossy JXL will only be applied to new photos that won't be treated by Guetzli (at least that's the plan)
|
|
2021-02-13 02:38:18
|
Oh thatโs what you mean. I understand now
Yes keeping constant visual quality is an added benefit on top of the file savings
|
|
2021-02-13 02:38:36
|
Google Photos team will need a survey, what distance is the best compromise between quality and storage savings and encode JXLs with that distance
|
|
|
BlueSwordM
|
2021-02-13 02:39:17
|
d 0.0 or bust.
|
|
|
|
Deleted User
|
2021-02-13 02:39:19
|
Ah they could make it happen - someone just needs to show the numbers of how much less bandwidth would be used etcetera
|
|
|
190n
|
2021-02-13 02:39:23
|
google photos can also use jxl even for people with original quality uploads with the lossless jpegโjxl transcode
|
|
|
|
Deleted User
|
2021-02-13 02:40:17
|
Holy shit, those are actually free storage space savings!
|
|
2021-02-13 02:40:36
|
You've got a damn good point bro too
|
|
|
190n
|
2021-02-13 02:40:41
|
i think dropbox does this already with something other than jxl
|
|
|
|
Deleted User
|
2021-02-13 02:40:46
|
Lepton
|
|
|
190n
|
2021-02-13 02:40:59
|
https://dropbox.tech/infrastructure/lepton-image-compression-saving-22-losslessly-from-images-at-15mbs
|
|
2021-02-13 02:41:17
|
since 22% is similar to what jxl claims i'm guessing lepton uses some of the same techniques?
|
|
|
|
Deleted User
|
2021-02-13 02:41:46
|
No, IIRC Lepton is anti-progressive, because it encodes AC *before* DC
|
|
|
Scope
|
2021-02-13 02:42:21
|
Lepton is slightly denser and slower (and single threaded)
|
|
|
|
Deleted User
|
2021-02-13 02:42:28
|
And it's specifically tuned for compressing JPEGs
|
|
2021-02-13 02:42:52
|
Lepton should be compared more with Brunsli than with JPEG XL
|
|
2021-02-13 02:43:48
|
Brunsli was once part of JPEG XL, but that was scrapped and lossless JPEG transcode is now done by encoding JPEG block coeffs directly as VarDCT 8x8 blocks
|
|
|
190n
|
2021-02-13 02:44:21
|
> ๐
<@!321486891079696385> why not ๐
|
|
|
|
Deleted User
|
2021-02-13 02:44:47
|
Scrapping Brunsli made the spec easier, shorter and the encoder + decoder are smaller
|
|
2021-02-13 02:47:47
|
Another minus of Lepton is that you can't view it in any image viewer bc it wasn't meant to be used this way, while JPEG XL is compressing by using the coeffs like an image codec and simply storing them better without doing any Brunsli or Lepton level ultra-compression gizmo
|
|
|
190n
|
2021-02-13 02:58:26
|
yeah tbh i don't know very much about the tech that makes it work, but the jpeg transcode ability has me really hyped. as soon as android supports jxl i'll probably convert all the photos i've taken
|
|
|
|
Deleted User
|
2021-02-13 03:00:01
|
Me too, I'm waiting for Google Photos (and optionally Samsung Gallery, but I can file a request now bc I don't have to wait for a browser implementation)
|
|
2021-02-13 03:00:45
|
Pls someone make similar graphs for JXL lossless transcode mode:
|
|
2021-02-13 03:00:50
|
https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/2016/07/lepton-15.png
|
|
|
190n
|
2021-02-13 03:01:19
|
hmm maybe i can try that later tonight
|
|
|
|
Deleted User
|
2021-02-13 03:01:23
|
https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/2016/07/lepton-17.png
|
|
2021-02-13 03:02:19
|
`Lepton encode rate when encoding 10,000 images on an Intel Xeon E5 2650 v2 at 2.6GHz`
|
|
2021-02-13 03:02:43
|
https://dropbox.tech/cms/content/dam/dropbox/tech-blog/en-us/2016/07/lepton-16.png
|
|
2021-02-13 03:03:04
|
`Lepton decode rate when decoding 10,000 images on an Intel Xeon E5 2650 v2 at 2.6GHz`
|
|
|
190n
|
2021-02-13 03:03:36
|
jxl->jpeg should be faster than jxl->pixels right?
|
|
|
|
Deleted User
|
2021-02-13 03:03:50
|
But the first graph would be the most interesting comparison
|
|
|
190n
|
2021-02-13 03:03:50
|
for a jxl that was losslessly compressed from a jpeg
|
|
|
|
Deleted User
|
2021-02-13 03:04:44
|
I can't guarantee but probably yes, bc you don't have to mess with DCT and all that stuff
|
|
2021-02-13 03:05:31
|
JXLโJPG lossless transcode is so fast that it's said it can be done in real time on a server
|
|
|
Crixis
|
2021-02-13 03:29:22
|
Any news from firefox?
|
|
|
_wb_
|
2021-02-13 07:14:08
|
Unintuitively, I think jxl -> pixels can actually be faster than jxl -> jpeg for large images.
|
|
2021-02-13 07:14:35
|
Because jxl decode and iDCT/color convert can be done in parallel
|
|
2021-02-13 07:15:33
|
But jpeg writing has to be done in the same way as the original jpeg, so it's sequential
|
|
2021-02-13 07:15:52
|
Both should be quite fast though
|
|
|
VEG
|
2021-02-13 07:38:33
|
https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
|
|
2021-02-13 07:38:43
|
New Chromium ticket
|
|
|
_wb_
|
2021-02-13 08:10:06
|
Priority 1 chromium bug, that's good.
|
|
2021-02-13 08:12:28
|
Firefox, no idea
|
|
2021-02-13 08:14:18
|
Getting jxl in blink is first priority. Then webkit and gecko.
|
|
2021-02-13 08:15:42
|
Webkit will be hardest because Safari/iOS use the system level prioprietary CoreMedia for image decoding
|
|
|
VEG
|
2021-02-13 08:17:27
|
As far as I know, Apple has own fork of WebKit.
|
|
2021-02-13 08:17:53
|
For example, when Safari already supported APNG (it was a surprise from Apple), WebKit didn't support it yet.
|
|
|
Nova Aurora
|
|
VEG
As far as I know, Apple has own fork of WebKit.
|
|
2021-02-13 08:18:35
|
But why, they totally control webkit already
|
|
|
VEG
|
2021-02-13 08:20:47
|
It is probably like Chromium and Chrome.
|
|
2021-02-13 08:21:16
|
The APNG support was implemented in the closed source part of WebKit/Safari.
|
|
|
_wb_
|
2021-02-13 08:22:39
|
They have e.g. Kakadu in CoreMedia
|
|
2021-02-13 08:22:55
|
For jpeg 2000 decoding
|
|
|
VEG
|
2021-02-13 08:23:47
|
https://bugs.webkit.org/show_bug.cgi?id=17022#c47
|
|
2021-02-13 08:23:57
|
From the time when WebKit added APNG support.
|
|
2021-02-13 08:24:06
|
Apple's own implementation was a bit buggy.
|
|
|
_wb_
|
2021-02-13 08:24:58
|
Also HEIC is in CoreMedia, but it's not on the list of codecs Safari allows in an img tag
|
|
|
Orum
|
2021-02-13 08:33:54
|
Firefox is still priority 5, i.e. "do not want"
|
|
|
_wb_
|
|
VEG
|
2021-02-13 08:47:01
|
No worries, the priority will be changed when it is released in Chromium
|
|
|
_wb_
|
2021-02-13 08:58:45
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1539075
|
|
2021-02-13 08:58:59
|
Just added a comment there.
|
|
|
Orum
|
2021-02-13 09:59:57
|
good luck, they seem to just be ignoring it entirely
|
|
|
Jim
|
2021-02-13 01:11:04
|
I wouldn't worry as much about Firefox. They tend to be late to the game. Once they see Chrome adding it in and possibly Safari taking interest, it will likely change.
|
|
|
Orum
good luck, they seem to just be ignoring it entirely
|
|
2021-02-13 01:11:51
|
They also have fewer development resources. I'm sure their interest will pick up as they see other browsers taking interest.
|
|
|
Orum
|
2021-02-13 01:12:32
|
we'll see
|
|
|
|
veluca
|
|
_wb_
But jpeg writing has to be done in the same way as the original jpeg, so it's sequential
|
|
2021-02-13 01:37:53
|
jpeg writing could be partially parallelized I guess
|
|
|
_wb_
|
2021-02-13 02:06:09
|
Could it? If you don't control where the restart markers are?
|
|
2021-02-13 02:06:36
|
Ah yes because huffman writes whole bits
|
|
2021-02-13 02:07:01
|
So you can append streams
|
|
|
fab
|
2021-02-13 02:48:58
|
they want a 1.0 format i think. webp before 1.0 or 1.1 ??? i don't know the version wasn't adopted. maybe is that the reason?
|
|
|
_wb_
|
2021-02-13 03:40:59
|
Maybe. Version numbers are not the most reliable indicator of maturity though
|
|
2021-02-13 03:42:42
|
It's after all just a name, something devs can just arbitrarily choose. I have seen version 0.1 software that is more robust and mature than some of the software that calls itself version 10.0.
|
|
|
lonjil
|
2021-02-13 04:09:12
|
version numbers does have a certain effect on people's perception. I would hope that developers would evaluate JXL on purely technical grounds though, of course ๐
|
|
|
fab
|
2021-02-13 04:10:18
|
so webp first version to be adopted in mozilla Firefox in 2019 which was
|
|
2021-02-13 04:10:22
|
1,1.0 or 1.2.0
|
|
2021-02-13 04:10:29
|
or a commit in between
|
|
|
|
Deleted User
|
2021-02-13 06:09:41
|
version numbers do bring some info for the people outside: "If the developer of the software wasn't confident enough to call it 1.0 it must not be that stable"
|
|
|
_wb_
|
2021-02-13 06:16:57
|
Yes, but different communities have different standards for that. Some call the first draft version 1.0 and things only start to become usable around version 4 or 5, at the earliest. For others, 1.0 is a major milestone and indication of maturity.
|
|
2021-02-13 06:20:07
|
What matters most for something like this is:
- is the bitstream stable
- is the library api stable
- is the implementation robust
- how likely are security issues
- will security issues be fixed quickly
|
|
2021-02-13 07:17:53
|
<@795684063032901642> any idea when I can expect the first Chrome Canary that has jxl support behind a flag?
|
|
|
shandrew
|
2021-02-14 05:51:57
|
For many purposes like web serving of jpeg, Lepton's excellent--the time to first byte is very short, so at the cost of some server CPU, you can decompress the lepton and deliver the jpeg while it's being decompressed--virtually no difference to clients.
|
|
|
lonjil
|
2021-02-14 05:54:20
|
Still the size difference. On slow connections saving 22% on the load time would be nice.
|
|
|
_wb_
|
2021-02-14 07:23:35
|
Is the time to first byte also short when the jpeg is progressive?
|
|
|
|
Deleted User
|
|
_wb_
What matters most for something like this is:
- is the bitstream stable
- is the library api stable
- is the implementation robust
- how likely are security issues
- will security issues be fixed quickly
|
|
2021-02-14 01:51:52
|
I think decoding of animations will also be a required step for including jxl in browsers
|
|
|
_wb_
|
2021-02-14 01:55:04
|
Yes, we should be functionally as complete as possible: color management, transparency, animation, progressive decode: the more we can get working correctly from the start, the better.
|
|
2021-02-14 01:57:26
|
(but we also shouldn't let perfection be the enemy of the good, better to get things working well enough than to take 2 years to get the best possible browser integration)
|
|
|
|
Deleted User
|
2021-02-14 01:57:57
|
Yes, you are right. That is a hard lesson to learn ๐
|
|
|
spider-mario
|
2021-02-14 06:12:23
|
we would also like to have HDR working, we are looking into it
|
|
|
Scope
|
2021-02-14 07:08:20
|
<https://forum.doom9.org/showthread.php?p=1935952#post1935952> Also, yes, it would be nice to post JXL WIC here if someone has already compiled it (I might do it later when I have time, since it requires VS and Inno)
|
|
2021-02-14 09:22:19
|
https://irfanview-forum.de/forum/program/feature-requests/13089-
|
|
2021-02-14 09:22:38
|
<:Thonk:805904896879493180>
|
|
|
chuni
|
2021-02-14 10:29:44
|
I messaged Irfan a few days ago about JPEG XL: https://discord.com/channels/794206087879852103/806522208692207617/807992518116769792
|
|
2021-02-14 10:30:56
|
He essentially just said "later". ๐คท
|
|
|
|
Deleted User
|
2021-02-15 05:42:47
|
I see the post has the tag **Supported** so maybe it was implemented ๐ฅฒ
|
|
|
Moritz Firsching
|
|
_wb_
<@795684063032901642> any idea when I can expect the first Chrome Canary that has jxl support behind a flag?
|
|
2021-02-15 02:13:28
|
Just saw this. Hopefully soon: some code review if going on here: https://chromium-review.googlesource.com/c/chromium/src/+/2693607 and there is this tracking bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
|
|
|
_wb_
|
2021-02-15 02:14:30
|
ah cool
|
|
2021-02-15 02:15:02
|
no animation yet?
|
|
2021-02-15 02:18:02
|
I think it's OK to focus on still image for now, since that will be the main use case and animation does add some complications
|
|
2021-02-15 02:19:14
|
doing DC progressively would be nice if that can still be added
|
|
2021-02-15 02:23:16
|
though maybe it's best to get some MVP implementation in already, then improve it
|
|
2021-02-15 02:24:21
|
RGBA with correct color handling is already nice
|
|
2021-02-15 02:26:37
|
I'd prefer if animation and progressive also worked from the start when it's not behind a flag anymore
|
|
2021-02-15 02:27:47
|
to avoid bad first impressions and people saying "you said jxl was progressive, but all I see is the same non-progressive decode as avif"
|
|
2021-02-15 02:30:39
|
Great to see progress on getting in chromium, if we are in there, then that's a VERY big step in the direction of universal adoption
|
|
2021-02-15 02:32:08
|
not the only thing that needs to happen, but it will make it a lot easier to convince other software that they need jxl support too
|
|
|
fab
|
2021-02-15 03:00:28
|
how to use it on chrome?
|
|
|
_wb_
|
2021-02-15 03:01:19
|
not yet
|
|
2021-02-15 03:01:52
|
unless you build your own with that branch checked out
|
|
|
Moritz Firsching
|
|
_wb_
I'd prefer if animation and progressive also worked from the start when it's not behind a flag anymore
|
|
2021-02-15 03:18:14
|
I hope we make progress on progression soon and I agree that it would be nice to have before enabling the flags by default.
We do have correct color handling, but in the commit above HDR is not yet implemented. We are also working on that.
|
|
|
lithium
|
2021-02-15 03:30:23
|
I hope non-photographic image quality can more stable in vardct(in high bbp),
some non-photographic image get worst case in vardct and worse than avif.
|
|
|
|
Deleted User
|
2021-02-16 02:11:32
|
Yeah, most features need to be complete when support will be available without a flag in chrome. I don't want jxl to have a PulseAudio type of release ๐
|
|
|
Troc
|
2021-02-18 10:25:33
|
Is there yet a full-featured picture viewer that accepts jxl?
|
|
|
Nova Aurora
|
2021-02-18 10:30:08
|
Anything that uses qt on linux
|
|
2021-02-18 10:30:21
|
using the plugin
|
|
2021-02-18 10:31:23
|
there are also plugins for WIC for windows, nomacs, and a jxl viewer for macos
|
|
|
|
Deleted User
|
2021-02-19 08:30:14
|
I see the WIC plugin for windows has no release yet. Can you install the dll?
|
|
|
Scope
|
2021-02-20 06:24:06
|
https://caniuse.com/jpegxl
|
|
|
_wb_
|
2021-02-20 09:34:28
|
my next blog post is ready and queued for publication on Monday morning (US west coast time)
|
|
2021-02-20 09:34:32
|
title will be "Time for Next-Gen Codecs to Dethrone JPEG"
|
|
2021-02-20 09:37:35
|
it's going to be a nice one, spent quite a lot of effort on it
|
|
|
Jim
|
2021-02-20 11:39:55
|
Nice, about time for an article that talks about getting rid of JPEG. ๐
|
|
|
fab
|
2021-02-20 11:51:20
|
will talk about jpeg limitation in ybcr and how to convert png,gif and jpeg with jpeg xl in a lossless way? or cloudinary talks?
|
|
|
_wb_
|
2021-02-20 12:25:22
|
It's basically a comparison matrix to give an overview of the features and properties of JPEG, PNG, J2K, WebP, HEIC, AVIF and JXL, making the point that maybe J2K and WebP weren't strong enough to overthrow the JPEG/PNG combo because the difference was small and there were aspects in which they didn't (reliably) beat JPEG/PNG, but in the case AVIF and JXL it will be different.
|
|
|
Troc
|
|
_wb_
It's basically a comparison matrix to give an overview of the features and properties of JPEG, PNG, J2K, WebP, HEIC, AVIF and JXL, making the point that maybe J2K and WebP weren't strong enough to overthrow the JPEG/PNG combo because the difference was small and there were aspects in which they didn't (reliably) beat JPEG/PNG, but in the case AVIF and JXL it will be different.
|
|
2021-02-21 06:04:38
|
Be sure to link it.
|
|
|
_wb_
|
2021-02-21 02:29:26
|
https://res.cloudinary.com/cloudinary-marketing/image/upload/w_960,f_png,dpr_2.0/Web_Assets/blog/Battle-of-the-Codecs_fnl.png
|
|
2021-02-21 02:29:47
|
That is the "conclusion" comparison table
|
|
2021-02-21 02:30:01
|
From the blogpost that will be published tomorrow
|
|
|
Scope
|
2021-02-21 02:31:53
|
lossless: WebP = HEIC = AVIF ๐ค
|
|
2021-02-21 02:33:11
|
Or is it visually lossless?
|
|
|
_wb_
|
2021-02-21 02:34:27
|
Lossless photo is that row
|
|
2021-02-21 02:34:40
|
For lossless nonphoto they are quite different
|
|
2021-02-21 02:36:42
|
Lossless WebP is strictly better than PNG (for 8-bit), but PNG is not very good for lossless photographic images
|
|
2021-02-21 02:37:23
|
E.g. lossless j2k is often better, also e.g. for medical imagery (which is also sensor data)
|
|
|
Scope
|
2021-02-21 02:37:26
|
Even J2k lossless is better than WebP lossless for photos (although I haven't tested the more efficient commercial codecs)?
|
|
|
_wb_
|
2021-02-21 02:38:16
|
No difference between kakadu and openjpeg for lossless, I don't think j2k has much bitstream choices at all in lossless
|
|
2021-02-21 02:39:15
|
For lossy, kakadu is quite a lot better than openjpeg, and the table is for kakadu
|
|
2021-02-21 02:51:03
|
Looks fair, the table?
|
|
|
Scope
|
2021-02-21 03:06:14
|
The rest looks good (only for lossless WebP photo I would probably add half a point, although it depends on the content and format's capabilities and for example for the web is still the best option for lossless compression including photos)
|
|
|
eaitrosducmnSglR
|
2021-02-21 03:08:29
|
why is generation loss resilience for jpeg and jxl rated the same, wasn't the original jpeg a lot more prone to generation loss?
|
|
|
_wb_
|
2021-02-21 03:12:11
|
It depends on the implementation. When I try default libjpeg-turbo or mozjpeg, it's quite resilient
|
|
2021-02-21 03:12:49
|
Some implementations like current imagemagick seem to be doing something wrong and they degenerate fast
|
|
2021-02-21 03:13:35
|
https://youtu.be/FtSWpw7zNkI
|
|
2021-02-21 03:16:24
|
In AVIF, I also tried not decoding to rgb but staying in yuv444/yuv420. It didn't make a noticeable difference.
|
|
|
Scope
|
2021-02-21 03:18:16
|
Yep, it all depends on the encoders, also progressive decoding is a bit better in JXL (but maybe 4 maximum points are not enough to show the difference, although in some ways it will be better in j2k, so it's ok)
|
|
|
_wb_
|
2021-02-21 03:25:32
|
J2K is extremely flexible in bitstream ordering options, maybe too flexible (to allow efficient implementations)
|
|
|
Scope
|
2021-02-21 03:42:41
|
<@!794205442175402004> Btw, comparing incremental decoding support can also be interesting (and for example Pascal Massimino considers it even more important than progressive, less cost to decode and a clear understanding when the image is fully loaded)
|
|
|
|
Deleted User
|
2021-02-21 03:44:16
|
JPEG XL can do both ๐
|
|
|
_wb_
|
2021-02-21 03:44:20
|
That is imo mostly a matter of implementation
|
|
2021-02-21 03:44:41
|
An incremental avif decoder should in principle be possible too
|
|
2021-02-21 03:47:33
|
It's just that video decoder implementers cannot be bothered with providing an api that lets you get a partially decoded frame, because why bother with that complication - it does not have any use in the context of video
|
|
|
Scope
|
2021-02-21 03:49:50
|
Yep, although I prefer progressive decoding, incremental is still something like an intermediate option (which is probably worth mentioning)
|
|
|
_wb_
|
2021-02-21 03:51:58
|
It's certainly better than nothing
|
|
|
fab
|
2021-02-22 03:34:25
|
when the article about jpeg xl?
|
|
|
_wb_
|
2021-02-22 03:40:38
|
NOW
|
|
2021-02-22 03:40:40
|
https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg
|
|
|
bonnibel
|
2021-02-22 03:48:40
|
"the existence of the tag" is there an "<img>" supposed to be there?
|
|
2021-02-22 03:50:26
|
its either getting filtered out or parsed as an actual tag (cant check which, on phone rn)
|
|
|
Nova Aurora
|
2021-02-22 03:51:03
|
yes
|
|
2021-02-22 03:51:26
|
There is supposed to be an <img> there
|
|
2021-02-22 03:54:44
|
It's weird too
|
|
2021-02-22 03:55:12
|
If I move it back into the text using devtools it shows up
|
|
|
fab
|
2021-02-22 04:06:51
|
i read it
|
|
2021-02-22 04:07:04
|
18 minutes
|
|
|
_wb_
|
2021-02-22 04:11:48
|
Ah the <img> disappeared
|
|
2021-02-22 04:14:06
|
Will get it fixed
|
|
|
Scope
|
2021-02-22 04:17:35
|
Something strange with WebP resizing <:Thonk:805904896879493180>
|
|
2021-02-22 04:17:40
|
|
|
|
_wb_
|
2021-02-22 04:19:24
|
What am I looking at?
|
|
|
_wb_
Will get it fixed
|
|
2021-02-22 04:20:24
|
Is fixed now, if you hard refresh
|
|
|
Scope
|
|
Nova Aurora
|
|
_wb_
Is fixed now, if you hard refresh
|
|
2021-02-22 04:21:38
|
๐
|
|
|
Scope
|
|
_wb_
|
2021-02-22 04:43:03
|
Hm, I think the css might be set to NN rescaling, that's probably not a good idea
|
|
2021-02-22 04:43:31
|
I should have picked a smaller image so there is no browser downscaling
|
|