|
_wb_
|
2024-04-24 06:42:29
|
Obviously also the early display and storage technology was quite low fidelity anyway, so there was no point in broadcasting a high-fidelity signal that would then be ruined anyway.
|
|
|
|
JendaLinda
|
2024-04-24 07:32:18
|
I have a suspicion that the RGB to YUV formulas were tuned so the RGB color bar test would show as a nice grayscale steps on a black and white screen.
|
|
2024-04-24 07:35:12
|
I think there is no correct way how to extract luma from a color picture. Even different camera technologies have different sensitivity to different wavelengths.
|
|
|
Quackdoc
|
|
JendaLinda
I think there is no correct way how to extract luma from a color picture. Even different camera technologies have different sensitivity to different wavelengths.
|
|
2024-04-24 07:45:28
|
professional cameras have specifications that detail the photo sensitivity of the sensors
|
|
2024-04-24 07:45:35
|
well in most cases
|
|
|
_wb_
|
2024-04-24 07:50:36
|
There is a 'correct' way to extract the luma from a color image, based on the (average) response curves of the cone cells in the HVS. But to actually turn a color image into a grayscale one, you might want to do something different — e.g. take into account that we can see contrasts based on chromacity too, and try to not lose that information (e.g. so you don't just remove red text on a green background when both have a similar luma), or take into account that L,M,S cones are distributed differently in the fovea, causing S to be more relevant for its wide/peripheral/low-frequency contribution and L,M more for their high-frequency contribution (that's what inspired XYB to define luma using only L and M cone responses).
|
|
|
Quackdoc
|
|
_wb_
There is a 'correct' way to extract the luma from a color image, based on the (average) response curves of the cone cells in the HVS. But to actually turn a color image into a grayscale one, you might want to do something different — e.g. take into account that we can see contrasts based on chromacity too, and try to not lose that information (e.g. so you don't just remove red text on a green background when both have a similar luma), or take into account that L,M,S cones are distributed differently in the fovea, causing S to be more relevant for its wide/peripheral/low-frequency contribution and L,M more for their high-frequency contribution (that's what inspired XYB to define luma using only L and M cone responses).
|
|
2024-04-24 07:53:26
|
color->grayscale has been the source of many a headache for me lol
|
|
|
190n
|
2024-04-24 08:02:19
|
is something weird with the metadata in this png? ffmpeg says `rgba(pc, gbr/unknown/unknown)` (is there alpha or not?), and cjpegli (but only in xyb mode) creates a jpeg that is stretched horizontally and with messed up colors (as if it interpreted rgba data as rgb)
|
|
|
Quackdoc
|
2024-04-24 08:06:01
|
there is for sure an alpha channel
|
|
|
_wb_
|
2024-04-24 08:06:28
|
there is alpha, and it is trivial (all opaque)
|
|
2024-04-24 08:08:19
|
https://github.com/libjxl/libjxl/issues/2671
|
|
|
190n
|
2024-04-24 08:08:50
|
aha, didn't find that, thanks
|
|
|
|
JendaLinda
|
2024-04-24 08:33:51
|
There were several kinds of black and white cameras in use, either film and electronic sensors, vacuum tubes and solid state.
|
|
|
damian101
|
|
190n
aha, didn't find that, thanks
|
|
2024-04-24 11:15:08
|
oxipng removes unused alpha channels
|
|
|
|
JendaLinda
|
2024-04-24 11:30:07
|
All PNGs should be passed through at least fast optimizer to minimize the used color type because so many programs produce bloated PNGs.
|
|
|
damian101
|
2024-04-24 03:55:26
|
For end delivery, definitely...
|
|
|
Meow
|
|
JendaLinda
All PNGs should be passed through at least fast optimizer to minimize the used color type because so many programs produce bloated PNGs.
|
|
2024-04-24 03:56:58
|
With GIMP you could mean to produce zero-compression PNGs
|
|
2024-04-24 03:58:24
|
The size simply consists of pixels * 3 or 4 with a little information
|
|
|
|
JendaLinda
|
|
Meow
With GIMP you could mean to produce zero-compression PNGs
|
|
2024-04-24 04:33:50
|
That's just setting the zlib level to zero, right? You can do that, although I don't know if it has any use other than curiosity.
|
|
|
Meow
|
2024-04-24 04:34:34
|
Sure a simple setting of compression level
|
|
2024-04-24 04:35:16
|
Using 0 would result in that size slightly larger than pixels * 3 or 4
|
|
2024-04-24 04:36:54
|
Oh I'm not sure about that 4 as I haven't tested with Alpha channel yet
|
|
|
|
JendaLinda
|
2024-04-24 04:39:01
|
The file must be slightly larger than the raw pixel array. The file structure takes some space as well.
|
|
|
jonnyawsom3
|
2024-04-24 05:01:44
|
Especially in PNG with the CRC checks with every chunk
|
|
|
Meow
|
2024-04-24 05:18:57
|
With level 0 the one without background even grows 33% larger
|
|
2024-04-24 05:21:01
|
And... nothing
|
|
2024-04-24 05:22:15
|
You can produce a totally bloated PNG without putting in anything
|
|
2024-04-24 05:26:44
|
It becomes 8 KB after optimisation
|
|
|
|
JendaLinda
|
2024-04-24 10:07:33
|
Grayscale and paletted PNG formats are nearly identical, the format of IDAT chunks is the same.
Also I think 4bit and 2bit grayscale formats are there mostly for completeness as these are not used very much. Their paletted counterparts do show up occasionally.
|
|
|
Meow
|
2024-04-25 01:41:48
|
If you use Safari, do you see glitches on the animated WebP? https://jpegxl.info/test-page/
|
|
|
_wb_
|
|
Meow
If you use Safari, do you see glitches on the animated WebP? https://jpegxl.info/test-page/
|
|
2024-04-25 03:04:00
|
Yes, it leaves traces of not properly cleared pixels.
|
|
2024-04-25 03:04:42
|
(also the animated jxl is not animated but a still image)
|
|
|
Meow
|
|
_wb_
(also the animated jxl is not animated but a still image)
|
|
2024-04-25 03:12:34
|
That JXL works fine on a few Gecko-based browsers like Pale Moon
|
|
|
Nyao-chan
|
|
Quackdoc
anyone who relies on any LLM for this stuff now, or any time in the near future is an idiot
|
|
2024-04-26 08:58:49
|
Not directly relevant, since I'm not relying, but I've found they are useful for getting "directions". They cover a huge range of topics and can help you tell where to look. In the past I asked a question on stack exchange: https://math.stackexchange.com/questions/4710687/optimizing-cookie-clicker-garden-mutation-layout
With chatgpt I can get an answer quicker and if it's wrong, no biggie
|
|
|
DZgas Ж
|
2024-04-27 04:12:25
|
interesting SVT-av1 artifacts on full static frame
|
|
|
DZgas Ж
interesting SVT-av1 artifacts on full static frame
|
|
2024-04-27 04:13:50
|
|
|
2024-04-27 04:14:37
|
<:AV1:805851461774475316>
|
|
|
Meow
|
2024-04-27 08:17:54
|
Why is the sample animation identical to the ones on jpegxl.info? https://w3c.github.io/PNG-spec/Implementation_Report_3e/
|
|
2024-04-27 08:18:03
|
|
|
|
yoochan
|
|
DZgas Ж
|
|
2024-04-28 09:11:08
|
The witness! I love this game!
|
|
|
DZgas Ж
|
|
_wb_
|
|
Meow
Why is the sample animation identical to the ones on jpegxl.info? https://w3c.github.io/PNG-spec/Implementation_Report_3e/
|
|
2024-04-28 01:19:12
|
It's this one: https://commons.m.wikimedia.org/wiki/File:24-cell-orig.gif
|
|
2024-04-28 01:21:23
|
Except an apng version of it, with full alpha, which you cannot do in gif.
|
|
|
Meow
|
2024-04-28 01:29:37
|
Yeah the one on Wikimedia Commons isn't with Alpha
|
|
|
jonnyawsom3
|
2024-04-28 01:31:26
|
Makes me want to re-render a version in Blender
|
|
|
Meow
|
2024-04-28 02:50:31
|
I can't really understand this 24-cell however
|
|
|
spider-mario
|
2024-04-28 04:02:56
|
I have no intention to
|
|
2024-04-28 04:06:02
|
my brain is busy enough with that sleeping beauty paradox
|
|
2024-04-28 04:06:26
|
I'm starting to think that the paradox is that _you_ get less sleep because of it
|
|
2024-04-28 04:07:37
|
but my blog post is taking shape so hopefully not for much longer
|
|
2024-04-28 04:13:15
|
(I have already convinced myself that the argument for 1/3 is bunk, but I want to explain why clearly enough for it to truly be the _coup de grâce_)
|
|
|
yoochan
|
2024-04-28 04:21:25
|
Did you tried to simulate the issue with a small code, run it thousands times and get your answer?
|
|
|
spider-mario
|
2024-04-28 04:47:06
|
I’m not sure it would solve anything; it’s relatively easy to come up with code that returns either answer (but what’s computed by the “straightforward” way to code the 1/3 answer arguably isn’t a probability)
|
|
2024-04-28 04:48:00
|
(there is a less straightforward way that does compute a probability, but a different one than the one in the problem)
|
|
|
yoochan
|
2024-04-29 11:32:35
|
svg2 draft was modified for the last time in 2018, do you think it's dead ? https://www.w3.org/TR/SVG2/
|
|
2024-04-29 11:33:54
|
oh ! no ! my bad, it went to something else and I didn't noticed : https://svgwg.org/svg-next/
|
|
|
spider-mario
|
2024-04-29 12:48:57
|
in a nutshell, what are some major differences with SVG 1?
|
|
|
yoochan
|
2024-04-29 12:58:56
|
Still trying to understand
|
|
|
Meow
|
2024-04-29 01:28:08
|
https://en.wikipedia.org/wiki/SVG#Version_2
|
|
2024-04-29 01:28:45
|
So it's been at the Candidate Recommendation stage for almost 8 years
|
|
2024-04-29 01:30:26
|
Let's see PNG spec 3rd edition or SVG 2 would reach the W3C recommendation stage earlier
|
|
|
gb82
|
2024-04-29 09:48:30
|
I still think we need a `.svgb` as a svgz successor with brotli compression
|
|
|
yoochan
|
2024-04-30 05:16:11
|
In fact I do serve my static svg as pre-compressed svg.br files for embedding in web pages and it works marvelously
|
|
|
LMP88959
|
2024-05-02 12:53:31
|
did i do this right? i just installed mozjpeg
|
|
2024-05-02 12:53:51
|
```
cjpeg -quality 0 -baseline -verbose bike.png > out.jpeg
```
|
|
2024-05-02 12:54:26
|
|
|
2024-05-02 12:54:35
|
47kilobytes
|
|
2024-05-02 12:54:47
|
why does the jpeg file itself have so many zeroes in it though
|
|
2024-05-02 12:55:02
|
zipping the jpeg makes it 30kb
|
|
|
Fox Wizard
|
2024-05-02 08:03:03
|
You can use an optimizer like ECT on it for very fast optimization which makes it 10.78KB (23.2%) smaller
|
|
|
yoochan
|
2024-05-02 08:13:52
|
so much palette whaou <:KekDog:805390049033191445>
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
Fox Wizard
You can use an optimizer like ECT on it for very fast optimization which makes it 10.78KB (23.2%) smaller
|
|
2024-05-02 09:53:44
|
smh I expected you to optimize that file during hours <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
|
TheBigBadBoy - 𝙸𝚛
smh I expected you to optimize that file during hours <:KekDog:805390049033191445>
|
|
2024-05-02 10:06:08
|
I'm afk now, but started jpegultrascan <:KekDog:884736660376535040>
|
|
2024-05-02 10:06:21
|
Might be done by now
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-02 10:06:54
|
btw the update crashing on your machine, is it for all your inputs?
|
|
|
Fox Wizard
|
2024-05-02 10:08:59
|
Yup
|
|
2024-05-02 10:09:25
|
Tried it with 10 images and they all caused error spam
|
|
2024-05-02 10:14:08
|
Heh, 1 and 13 were the same size <:KekDog:884736660376535040>
|
|
|
spider-mario
|
2024-05-02 10:20:56
|
looks like the graphics of a DOS game
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
Fox Wizard
Heh, 1 and 13 were the same size <:KekDog:884736660376535040>
|
|
2024-05-02 10:24:15
|
quite expected for a small picture like that <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
2024-05-02 10:25:20
|
It's funny how it's often the case
|
|
2024-05-02 10:25:34
|
I rarely have cases where 13 is smaller than 3 XD
|
|
2024-05-02 10:26:38
|
I usually just default to using 1 when I optimize many images and 3 when I optimize a few
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-02 10:36:13
|
did you already tried `-b 0` ?
|
|
|
Fox Wizard
|
2024-05-02 10:43:01
|
Never tried that <:KekDog:884736660376535040>
|
|
|
LMP88959
|
|
Fox Wizard
You can use an optimizer like ECT on it for very fast optimization which makes it 10.78KB (23.2%) smaller
|
|
2024-05-02 11:25:59
|
Oh i thought mozjpeg was already doing that optimization considering that’s what they claim on their page + they have an optimize flag
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
LMP88959
Oh i thought mozjpeg was already doing that optimization considering that’s what they claim on their page + they have an optimize flag
|
|
2024-05-02 11:34:01
|
yep, and ECT uses mozjpeg's `jpegtran`, but it does a little more of work to ooptimize the file better
|
|
2024-05-02 11:34:53
|
I don't remember what was the extra optimization steps (better Huffman coding ?), but ECT compresses in most cases better than mozjpeg
|
|
|
LMP88959
|
2024-05-02 11:38:47
|
Gotcha, thanks! Ive been curious to see what a few decades of improvement has accomplished for jpeg
|
|
|
|
JendaLinda
|
2024-05-02 12:11:53
|
I t seems that encoding JPEG as progressive does pretty good optimization by default.
|
|
|
jonnyawsom3
|
|
LMP88959
Oh i thought mozjpeg was already doing that optimization considering that’s what they claim on their page + they have an optimize flag
|
|
2024-05-02 02:14:57
|
You probably want to remove -baseline from the command
|
|
2024-05-02 02:15:09
|
Because of the message above
|
|
|
LMP88959
|
2024-05-02 02:15:22
|
Ohhhhh
|
|
2024-05-02 02:15:40
|
I mustve misinterpreted the description of baseline
|
|
2024-05-02 02:17:25
|
I assumed progressive jpeg creates larger files
|
|
2024-05-02 02:17:57
|
Because usually things that accommodate for something like progressive transmission end up sacrificing something in return
|
|
|
jonnyawsom3
|
|
spider-mario
looks like the graphics of a DOS game
|
|
2024-05-02 02:18:32
|
I've noticed a resurgence lately of games using quantization on the lighting to achieve similar effects, sometimes at lower render resolution too
|
|
|
|
JendaLinda
|
|
LMP88959
Because usually things that accommodate for something like progressive transmission end up sacrificing something in return
|
|
2024-05-02 02:19:00
|
In jpeg, this apparently works the other way.
|
|
|
LMP88959
|
2024-05-02 02:19:27
|
Yeah, pretty interesting
|
|
|
jonnyawsom3
|
|
LMP88959
Because usually things that accommodate for something like progressive transmission end up sacrificing something in return
|
|
2024-05-02 02:19:27
|
In this case because progressive is *slightly* newer (I think), it can be smarter with the encoding
|
|
|
LMP88959
|
|
2024-05-02 02:21:40
|
Also... I assume you want the low quality, right?
|
|
|
username
|
2024-05-02 02:22:07
|
iirc the data in progressive mode is laid out in such a way where it can be compressed better with the downside being it takes more effort to decode and also won't work in low memory situations since space for the whole image has to be allocated when decoding a progressive JPEG
|
|
|
LMP88959
|
2024-05-02 02:22:23
|
Yeah i wanted to see how much better mozjpeg’s worst quality is than whatever GIMP uses for jpeg
|
|
|
Meow
|
2024-05-02 04:40:50
|
Jpegli shines when -q is at least 75
|
|
2024-05-02 04:41:41
|
JPEG images below quality 75 are generally crap however
|
|
|
|
JendaLinda
|
2024-05-03 07:20:26
|
Traditional jpeg encoders are kinda dumb, they just cut off preset amount of data, so there was certainly room for improvement.
|
|
|
|
afed
|
2024-05-03 08:02:26
|
<@853026420792360980> still don't fully understand what avtransport is, it's used in ffmpeg as some internal protocol, but can also be a streaming protocol and even has some separate container like e.g. nut (and this container is better/more advanced than nut?)
but, still not fully used with all features because not standardized?
|
|
|
Traneptora
|
2024-05-03 12:12:25
|
it's a streamable container and protocol
|
|
|
|
afed
|
2024-05-03 12:21:29
|
also, is avtransport container not usable in ffmpeg yet?
just through avcat?
|
|
|
|
JendaLinda
|
2024-05-03 02:01:24
|
Is there any requirement that luma and chroma channels should use separate quant tables in jpeg? I've come across some jpegs where the quant tables are two identical copies.
|
|
2024-05-03 02:02:42
|
The jpeg optimizers could reduce them into one. I tried to manually edit the star-of-frame so all channels used the quant table zero and everything seems to work alright.
|
|
2024-05-03 02:05:02
|
ECT removed the now unused quant table as well.
|
|
|
_wb_
|
2024-05-04 06:37:37
|
No, there is no such requirement.
|
|
|
|
JendaLinda
|
2024-05-04 08:07:07
|
So having two identical quant tables in the file is unnecessary and the optimizers just don't handle this particular case.
Some encoders also put quant tables in separate DQT markers. That's unnecessary as well because one DQT may include multiple tables. ECT will combine multiple DQTs into one.
|
|
|
_wb_
|
2024-05-04 08:23:39
|
Yes, I guess some optimizers don't care about such micro-optimizations, but you're right.
|
|
|
DZgas Ж
|
|
DZgas Ж
SVT-AV1 surpassed AOMENC
With this new parameter. I have completely removed the use of CRF
now set crf=63 and
enable-variance-boost=1:variance-octile=1:variance-boost-strength=2
and use Only variance-boost-strength
for quality set
1 low
2 medium
3 high
3 very high
|
|
2024-05-04 11:36:28
|
yep. I made my ffmpeg svt-av1 fork which has overboost and my own feature function. This is all I'm doing because of the developer's fix, the shit https://gitlab.com/AOMediaCodec/SVT-AV1/-/commit/128712bf0aa83e4f680352b87c4b75ac3419364d
|
|
2024-05-04 11:37:23
|
aq 5-9 for overboost
and for my func 9-19
|
|
2024-05-04 11:52:04
|
|
|
|
DZgas Ж
670 kbps video. like 360p on twitch
```./ffmpeg -i 1_1927833401.mkv -vf "fps=60,scale=1280:720:flags=lanczos" -c:a libopus -b:a 65k -apply_phase_inv 0 -frame_duration 60 -vbr on -c:v libsvtav1 -crf 63 -g 600 -preset 6 -svtav1-params lookahead=120:tune=2:scm=1:irefresh-type=2:enable-cdef=1:enable-dlf=1:enable-mfmv=1:enable-qm=0:enable-restoration=0:enable-tf=1:enable-tpl-la=1:fast-decode=0:enable-dg=1:startup-mg-size=4:tile-columns=0:tile-rows=0:enable-variance-boost=1:variance-octile=1:variance-boost-strength=2 test-W_1.mkv```
|
|
2024-05-04 12:44:59
|
<:PepeOK:805388754545934396> Unfortunately, that function i did looks worse. therefore, I will leave only the overboost (variance boost = 5-9) of the original function
|
|
2024-05-05 07:10:07
|
|
|
|
jonnyawsom3
|
2024-05-07 10:24:34
|
I remember seeing the PR in OBS a few months ago, guess I forgot to follow it because it got merged a while ago
https://github.com/derrod/obs-roi-ui
|
|
|
|
afed
|
2024-05-07 10:53:41
|
<:Poggers:805392625934663710>
<https://encode.su/threads/4272-New-approach-to-audio-compression>
> **New approach to audio compression?**
> We are brewing something new:
> <https://github.com/google/zimtohrli> is the "butteraugli" for audio
>
> <https://github.com/google/tabuli> shows the possibility of modeling audio with a sample-to-sample sliding FT, where higher frequencies have wider bands and shorter windows.
>
> <https://github.com/google/ringli> for our prototype audio compressor. I think it is one of the few that doesn't use the MDCT and aims at higher quality than traditional codecs. In our internal testing we see ~2.3x more compression near the psychoacoustically lossless domain.
|
|
|
|
JendaLinda
|
2024-05-07 11:09:34
|
I'm playing with cjpegli. I've noticed two unusual things. cjpegli uses three quantization tables (jpegs usually have one for luma and one for chroma) and it doesn't write JFIF marker (the main purpose of JFIF is to ensure the color jpeg is YCbCr).
|
|
|
jonnyawsom3
|
2024-05-07 11:11:41
|
Probably leftover from when it subsampled the blue in XYB too
|
|
2024-05-07 11:11:47
|
This? https://github.com/libjxl/libjxl/issues/3512
|
|
|
|
JendaLinda
|
2024-05-07 11:36:37
|
I've used the default settings so I suppose it's YCbCr.
|
|
2024-05-07 11:41:36
|
I've came across APP14 marker in RGB encoded jpegs, however cjpegli doesn't seem to support RGB encoding.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
JendaLinda
I've came across APP14 marker in RGB encoded jpegs, however cjpegli doesn't seem to support RGB encoding.
|
|
2024-05-07 11:44:27
|
well, I think you could use it:
```
$ cjpegli -v -v -v -v -h
-x key=value, --dec-hints=key=value
color_space indicates the ColorEncoding, see Description();
icc_pathname refers to a binary file containing an ICC profile.
```But never understood where is their `Description()`
Also, when you use `cjpegli --xyb`, by default it will use the RGB colorspace in addition to the XYB ICC
|
|
|
|
JendaLinda
|
2024-05-07 11:48:46
|
Sorry, my post in not very clear. I meant RGB encoding, where the color transformation is skipped and the RGB channels are encoded directly.
|
|
2024-05-07 11:56:33
|
I see, XYB requires ICC otherwise the image will look wrong. And the third channel is indeed subsampled for some reason.
|
|
2024-05-07 12:00:27
|
In YCbCr encoding, the chroma subsampling is turned off by default.
|
|
2024-05-07 12:11:29
|
Ah I see, the channels in XYB encoded jpeg are tagged RGB, so the decoder will not do the YCbCr-RGB conversion and the ICC presumably does the conversion instead? Sorry I don't really understand the XYB concept but this makes sense.
|
|
|
_wb_
|
2024-05-07 12:18:51
|
Yes, that's how it works. But I thought we stopped subsampling B because that creates jpeg files that cannot be recompressed with jxl? Or did that never happen?
|
|
|
|
JendaLinda
|
2024-05-07 12:40:53
|
The last build is still subsampling B but it can be turned off manually.
|
|
|
Meow
|
2024-05-07 07:02:14
|
Conversion of greyscale images by major codecs is more bizarre than my expectations. I'll test further
|
|
|
|
JendaLinda
|
2024-05-07 08:28:41
|
I had issues when a supposedly grayscale PNG used a palette of 256 shades of gray. Such png may be treated as RGB color image.
|
|
|
Demiurge
|
2024-05-08 12:32:14
|
Shouldn't it be considered a bug that jpegli produces XYB jpegs with chroma subsampling? Worse that it does it by default?
|
|
|
|
JendaLinda
|
2024-05-08 06:20:45
|
Agreed. After all, the default is supposed to be "visually lossless" and it doesn't make sense to subsample just one component anyway.
|
|
|
spider-mario
|
2024-05-08 07:37:41
|
in XYB, it kind of does
|
|
2024-05-08 07:46:41
|
|
|
|
|
JendaLinda
|
2024-05-08 10:19:16
|
But it apparently breaks compatibility, jpegs with one subsampled channel cannot be transcoded to JXL.
cjpegli uses a separate quantization table fo each channel so tweaking the quantization table for the third channel might be a better solution than the subsampling.
|
|
|
Meow
|
2024-05-08 11:16:43
|
Even ordinary greyscale and screentone greyscale can be very different among codecs
|
|
2024-05-08 11:24:06
|
In terms of file size, supposed to be lossless
Greyscale: QOI > PNG > HEIC > AVIF > WebP > JXL
Greyscale + Alpha: QOI > HEIC > JXL > PNG > AVIF > WebP
Screentone: HEIC > QOI > JXL > AVIF > WebP > PNG
Screentone + Alpha: HEIC > QOI > AVIF > JXL > PNG > WebP
|
|
2024-05-08 11:25:14
|
Only JXL preserves the Gray colour space from PNG
|
|
|
yoochan
|
2024-05-08 11:27:16
|
Interesting for screentone, what are your source images?
|
|
|
Meow
|
2024-05-08 11:29:21
|
Hidden for potential anthropomorphobia
|
|
2024-05-08 11:30:06
|
They were initially converted via Clip Studio Paint Ex
|
|
2024-05-08 11:33:04
|
It's a long time technique for printed comics
|
|
|
yoochan
|
2024-05-08 11:33:51
|
Thanks! Very very small grain but it is the first time I see some which are not from scanned contents 😅
|
|
2024-05-08 11:36:00
|
At the same time, dots here are sharper than traditional manga screentones
|
|
|
Meow
|
2024-05-08 11:40:26
|
I simply used the default settings, number of screen frequency=60 and angle=45
|
|
2024-05-08 11:41:21
|
Possibly printed results could be different
|
|
|
yoochan
|
2024-05-08 11:43:11
|
It is some screentone you generate from a greyscale image?
|
|
2024-05-08 11:45:11
|
I didn't know anthropomorphobia was even a thing...
|
|
|
Meow
|
|
yoochan
It is some screentone you generate from a greyscale image?
|
|
2024-05-08 11:52:55
|
No they were directly converted from the original true-colour image
|
|
|
|
JendaLinda
|
2024-05-08 11:58:31
|
QOI doesn't support grayscale.
WebP lossless encodes everything as RGBA but does pretty good job compressing it.
|
|
2024-05-08 12:00:11
|
h265 should support grayscale in theory
|
|
2024-05-08 12:01:47
|
AV1 as well
|
|
2024-05-08 12:14:00
|
Screen tone is interesting. I expected it would be 1 bit per pixel.
|
|
|
jonnyawsom3
|
|
JendaLinda
But it apparently breaks compatibility, jpegs with one subsampled channel cannot be transcoded to JXL.
cjpegli uses a separate quantization table fo each channel so tweaking the quantization table for the third channel might be a better solution than the subsampling.
|
|
2024-05-08 12:29:14
|
It *used* to be fixed actually, not sure when it was reverted https://github.com/libjxl/libjxl/issues/2284
|
|
|
Meow
|
|
JendaLinda
Screen tone is interesting. I expected it would be 1 bit per pixel.
|
|
2024-05-08 12:48:58
|
With different densities and at least three grey levels, screentone can be filled everywhere
|
|
2024-05-08 12:50:51
|
There used to be jobs for cropping and pasting screentone to comics in the past
|
|
|
JendaLinda
QOI doesn't support grayscale.
WebP lossless encodes everything as RGBA but does pretty good job compressing it.
|
|
2024-05-08 12:52:28
|
And WebP dumps the original DPI
|
|
2024-05-08 12:55:56
|
The preview panel of Finder on macOS can't handle screentone at all, even PNG
|
|
2024-05-08 01:00:27
|
I even can't be sure about if JXL really has issues with that
|
|
2024-05-08 01:02:40
|
It performs well only with ordinary greyscale but without Alpha
|
|
|
|
JendaLinda
|
2024-05-08 01:06:20
|
Predefined effort settings in JXL have mixed results.
|
|
|
Meow
|
2024-05-08 01:07:54
|
I used only `cjxl -d 0` for them
|
|
|
|
JendaLinda
|
|
Meow
The preview panel of Finder on macOS can't handle screentone at all, even PNG
|
|
2024-05-08 01:10:13
|
This seems to be an issue with downscaling filter.
|
|
|
Meow
|
2024-05-08 01:11:33
|
It even shows an animation initially
|
|
|
_wb_
|
2024-05-08 01:13:22
|
it's quite challenging to avoid aliasing/Moiré when downscaling such images
|
|
2024-05-08 01:14:50
|
If I open it in Chrome (well, Thorium) and go through the various zoom levels, this is what I get at one point
|
|
|
Meow
|
2024-05-08 01:16:00
|
Yeah it's even difficult to get a proper view
|
|
|
|
JendaLinda
|
2024-05-08 01:19:54
|
This style looks best if downscaled by half, quarter etc.
|
|
|
Meow
|
|
JendaLinda
This style looks best if downscaled by half, quarter etc.
|
|
2024-05-08 01:30:36
|
25% 50% 75% 100% the best
|
|
2024-05-08 01:31:14
|
Yes downscaling is a big issue
|
|
|
|
JendaLinda
|
2024-05-08 01:47:22
|
Speaking of DPI, JXL doesn't seem to preserve DPI information either. DPI is mostly important for printing so if the images are intended for printing, the DPI information should be preserved.
|
|
|
_wb_
|
2024-05-08 03:00:34
|
if you put it in Exif or XMP, it will be preserved
|
|
|
|
JendaLinda
|
2024-05-08 03:30:37
|
It's hard to determine when DPI info is actually important because so many pictures have DPI tags filled with nonsense just for the sake of it.
|
|
|
jonnyawsom3
|
|
Meow
Even ordinary greyscale and screentone greyscale can be very different among codecs
|
|
2024-05-08 03:39:07
|
I got the screentone JXL down to 590 KB with `-d 0 -e 10 -g 3 -E 3 -I 100` but still worse than PNG and took 4 minutes
|
|
|
Meow
|
2024-05-08 03:58:08
|
Still a significant saving from around 2 MB
|
|
2024-05-08 04:03:19
|
So you even added three modular mode options
|
|
2024-05-08 04:06:31
|
Without `-e 10` the file size is even larger
|
|
2024-05-08 04:13:49
|
The same `-d 0 -e 10 -g 3 -E 3 -I 100` too 155 seconds for me
|
|
|
jonnyawsom3
|
2024-05-08 04:17:27
|
`-e 9` still does fairly well and faster
|
|
|
Meow
|
2024-05-08 05:13:54
|
About 100 KB larger but it took 39 seconds
|
|
|
Demiurge
|
|
spider-mario
|
|
2024-05-08 05:48:42
|
this a human eye?
|
|
|
spider-mario
|
2024-05-08 05:49:08
|
yes, the cones
|
|
|
Demiurge
|
|
JendaLinda
But it apparently breaks compatibility, jpegs with one subsampled channel cannot be transcoded to JXL.
cjpegli uses a separate quantization table fo each channel so tweaking the quantization table for the third channel might be a better solution than the subsampling.
|
|
2024-05-08 05:49:39
|
specifically, JXL does not support RGB JPEGs with chroma subsampling, only YUV
|
|
2024-05-08 05:50:28
|
and XYB is for some reason stored as an RGB JPEG
|
|
|
spider-mario
|
2024-05-08 05:51:44
|
XYB effectively acts as its own “YCbCr-like” transform; you’d arguably not want a further such matrix transform on top
|
|
|
|
JendaLinda
|
2024-05-08 06:01:29
|
That's what I thought. RGB encoded jpegs don't use chroma subsampling at all, it would look worse than YCbCr.
|
|
|
Demiurge
|
|
spider-mario
XYB effectively acts as its own “YCbCr-like” transform; you’d arguably not want a further such matrix transform on top
|
|
2024-05-08 06:05:10
|
Would it have to be on top?
|
|
|
|
JendaLinda
|
2024-05-08 06:11:58
|
The "RGB encoding" of XYZ is a workaround, so no "RGB<>YCbCr" conversion takes place.
|
|
2024-05-08 06:13:57
|
The jpeg decoder doesn't have to know anything about XYB and the color management does the conversion thanks to the included ICC profile.
|
|
|
Quackdoc
|
|
Demiurge
specifically, JXL does not support RGB JPEGs with chroma subsampling, only YUV
|
|
2024-05-08 06:14:43
|
is this true? I thought `jpeg_upsampling` needed ycbcr but not `upsampling` or `ec_upsampling`
|
|
|
|
JendaLinda
|
2024-05-08 06:18:37
|
I suppose `upsampling` applies to all three color channels at once.
|
|
|
Quackdoc
|
2024-05-08 06:24:17
|
ah I see
|
|
|
Demiurge
|
2024-05-08 06:42:35
|
Yeah, it's true. RGB JPEGs are very uncommon and even more uncommon for them to have chroma subsampling
|
|
2024-05-08 06:42:41
|
since it makes no sense normally
|
|
2024-05-08 06:43:09
|
Unless it's not actually RGB
|
|
|
|
JendaLinda
|
2024-05-08 07:06:42
|
Any combination of subsampling can be enforced in jpeg, even subsampled luma rather than chroma, looks pretty funny.
|
|
|
yoochan
|
|
Meow
It's a long time technique for printed comics
|
|
2024-05-08 07:57:59
|
Speaking of screentone, it's interesting to see that a huge part of the patterns used by mangakas are far from a simple halftones, used as a printing process. Screentone were used as a way to fill large areas very fast, but not always with "halftoned uniform grey" https://b4comics.com/collections/screentone-trame-traditionnelle-manga?ls=en&cache=false clouds/skies/backgrounds and motion lines are very frequent also
|
|
|
Meow
|
2024-05-08 08:14:23
|
Softwares can now replace them completely but encoders and viewers can't deal with well
|
|
|
|
JendaLinda
|
2024-05-08 08:24:04
|
Repeating patterns might be an opportunity for using patches in JXL.
|
|
|
Meow
|
2024-05-09 03:17:38
|
I would like some explanation about why JXL doesn't perform well on such image
|
|
2024-05-09 03:18:05
|
And why libheif makes a clone
|
|
|
|
JendaLinda
|
2024-05-09 04:49:12
|
Lossless JXL usually works great, however it doesn't like particular types of images and requires tuning compression parameters to achieve good compression.
Lossless WebP gives decent results consistently and the slow setting is still pretty fast.
The HEIF family is buggy and unreliable, often decodes incorrectly. I don't like it.
|
|
2024-05-10 05:43:08
|
It would be interesting to see the sourc code of Pngout. It has some interesting quirks. Especially Pngout compression is influenced by the encoder that encoded the original png so there may be different results.
I was looking for an open source alternative, oxipng looks very promising. Thanks to the zopfli compression it usually gives better results that Pngout. However in some cases, especially flat-colored artwork, Pngout performs better compression.
|
|
2024-05-10 05:44:48
|
Oxipng supports zopfli and libdeflate. Curiously, libdeflate is sometimes better than zopfli.
|
|
|
|
afed
|
2024-05-10 05:47:54
|
<https://github.com/fhanau/Efficient-Compression-Tool>
|
|
|
|
JendaLinda
|
2024-05-10 05:52:23
|
This works great for jpegs. I've tried it on few pngs already optimized with oxipng and couldn't optimize them more. They both use zopfli so I suppose there's not much difference.
|
|
2024-05-10 05:52:55
|
And I like more options available in oxipng.
|
|
|
|
afed
|
2024-05-10 06:01:22
|
oxipng has much less optimization strategies, ect still has the most efficient and comprehensive own and implemented from other optimizers methods
and -9 is not the maximum optimization, there are some hidden options (but very slow), though that doesn't mean that certain png's are possible to optimize further after some optimizers
|
|
|
jonnyawsom3
|
2024-05-10 06:04:18
|
ECT is, as it says, efficient. Much lower memory usage and time spent compared to oxipng for equal or higher compression
|
|
|
|
afed
|
2024-05-10 06:07:29
|
ect can also be very slow with some settings and spend days, weeks, months on a single png <:KekDog:805390049033191445>
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-10 06:14:35
|
I tried a dozen of optimizers, and ECT is the one that can reach the smallest files (given enough time) for any Deflate data (GZIP, ZIP, PNG)
|
|
2024-05-10 06:17:15
|
the only limitation I saw is the maximal filesize, which is 1.2GB iirc
but then just need to use another optimizer, like this one: https://github.com/MrKrzYch00/zopfli (a mod of zopfli)
Running `./zopfli --help` prints```Floating point arithmetic precision: 64-bit
Maximum supported input file size: 17592186044415MB.```
|
|
2024-05-10 06:17:48
|
but it is beaten quite easily by ECT
|
|
|
jonnyawsom3
|
2024-05-10 06:24:21
|
I imagine it would be relatively easy to split the data and run ECT seperately, then combine the results... Somehow....
|
|
|
|
JendaLinda
|
2024-05-10 06:30:50
|
I've tried only ect -9 so far
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-10 06:53:02
|
well `ect -9 --mt-deflate` gives almost always smaller output, even for small files
and it is faster <:KekDog:805390049033191445>
|
|
|
|
JendaLinda
|
2024-05-10 07:21:06
|
I will try the advanced options.
|
|
2024-05-10 07:32:22
|
In jpeg optimization in ECT, I discovered a possible improvement. Sometimes I come across jpegs, where luma and chroma use identical quantization tables, so there are two identical copies stored in the file. ECT could compare quantization tables in the file and reduce the duplicates.
|
|
2024-05-12 05:28:24
|
I can manually edit the start-of-frame header so all channels use one copy of the quantization table and ECT will remove the unused copy. Everything seems to work without issues.
|
|
|
jonnyawsom3
|
2024-05-13 02:53:36
|
Currently having to 7z all my raw files because for some reason the 'lossless' DNG converter changes the decoded output and always embeds a preview even with the option disabled
|
|
2024-05-13 02:55:17
|
At least it's almost done....
|
|
|
spider-mario
|
2024-05-13 05:41:49
|
I must be missing something obvious but how does 7z-ing them solve the problem?
|
|
|
lonjil
|
2024-05-13 05:43:16
|
I assume the point of using the lossless converter was to save space
|
|
|
spider-mario
|
2024-05-13 05:44:29
|
ah, somehow I assumed that the source raws were not DNGs themselves
|
|
|
jonnyawsom3
|
2024-05-13 05:52:20
|
Yeah, it's 529 uncompressed DNG raws that total around 12 GB, I know my phone can read lossless compressed DNGs too, but whenever I try to convert them the colors are shifted and a 200 pixel wide jpeg preview is embedded, so 7z it was...
|
|
2024-05-13 05:53:19
|
Mostly done for redundancy, since I have them on my PC with filesystem compression too, but having them on the phone locally too will be useful if I need them
|
|
|
|
JendaLinda
|
2024-05-13 06:45:01
|
How does 7z compare to Brotli?
|
|
|
username
|
2024-05-13 07:16:15
|
more of a question of "How does LZMA2 compare to Brotli?" since 7z is just a container
|
|
2024-05-13 07:21:24
|
funny thing is since 7z is just a container you can use Brotil in a .7z and people have
|
|
|
jonnyawsom3
|
|
JendaLinda
How does 7z compare to Brotli?
|
|
2024-05-13 07:22:06
|
Original file was 22.5 MB
Brotli got 9.24 MB at max compression in 68 seconds
7z is 8.78 MB in 10 seconds (Single file, so not LZMA2's strongsuit either)
JXL is 7.42 MB in 3 seconds through the Adobe DNG converter (Although effort settings are ignored, so only 7)
|
|
2024-05-13 07:52:53
|
Also sorry <@98957339243073536> I got distracted doing this :P
The DNG converter is a special kind of hell made just for me, almost no documentation, no help command and the order of parameters matter with some being incompatible with no warnings or errors other than "Missing File"
|
|
|
Crite Spranberry
|
2024-05-14 01:13:34
|
Hmm, it appears cjpegli quality number for quality number is worse than paint.net jpeg exporter with 4:2:0
However the size of the output is much lower with the same quality number
It means I can have a higher or similar apparent quality image with the same or less file size, however I just have to shoot higher with my quality specification
|
|
|
_wb_
|
2024-05-14 03:14:48
|
quality scales differ between different software / encoders, e.g. mozjpeg and libjpeg-turbo are also not quite the same
|
|
|
Meow
|
2024-05-14 03:56:53
|
Jpegli requires slightly higher
|
|
|
|
JendaLinda
|
2024-05-14 07:17:47
|
Quantization tables in JPEG may optionally use 16 bit constants rather than 8 bit. I wonder why would anybody use 16 bit quantization constants. Quantization constants at 255 are already so strong so the quality is unusable. I see no purpose for higher quantization constants.
|
|
|
LMP88959
|
2024-05-14 07:24:31
|
How are the 16 bit constants treated
|
|
2024-05-14 07:24:55
|
I would assume it’s just an expansion of dynamic range to give more precision in the quantization
|
|
2024-05-14 07:25:38
|
I dont think it’s likely the 16 bit values are treated as extensions to the 8 bit quantizers
|
|
2024-05-14 07:26:03
|
E.g i think 65535 maps to 255.0
|
|
2024-05-14 07:26:16
|
But you get finer control over the quant
|
|
2024-05-14 07:26:18
|
<@688076786525143117>
|
|
|
|
JendaLinda
|
2024-05-14 07:27:29
|
It's an extension. Higher values decrease the quality further. The max value is 32767 and this just wipes the image entirely.
|
|
|
LMP88959
|
2024-05-14 07:27:57
|
😳lol that’s odd
|
|
2024-05-14 07:28:15
|
Would it possibly not do that if the jpeg had a higher bit depth
|
|
|
|
JendaLinda
|
2024-05-14 07:29:41
|
Perhaps the idea was originally like that.
|
|
|
|
veluca
|
|
LMP88959
I would assume it’s just an expansion of dynamic range to give more precision in the quantization
|
|
2024-05-14 07:33:09
|
you'd *think* so, yeah
|
|
|
LMP88959
|
2024-05-14 07:34:36
|
Strange design
|
|
|
lonjil
|
2024-05-14 08:36:55
|
12 bit jpeg with 16 bit dct is in the standard afaik
|
|
|
|
JendaLinda
|
2024-05-14 08:46:54
|
In baseline jpeg, quantization tables contain 8 bit constants.
|
|
2024-05-14 09:08:06
|
Now I'm really confused by the 12 bit jpeg thing. There is a bit depth field in the Start-Of-frame marker and it says 8 bits. Even if I take a 16 bit PNG and encode it using cjpegli, it still says 8 bits.
|
|
2024-05-14 09:18:54
|
So my previous testing of supposedly 12 bit jpegs are invalid.
|
|
2024-05-14 09:19:24
|
Both SOF and DQT indicate 8 bits inside jpegs created by cjpegli.
|
|
|
username
|
2024-05-14 09:21:37
|
even though 12 bit JPEGs are defined in the official spec pretty much nothing supports them so we are stuck with 8 bit JPEGs because 12 bit ones wouldn't work with software made over the course of decades
|
|
2024-05-14 09:23:17
|
they are incompatible with almost everything because no one thought it was necessary to implement support for them
|
|
2024-05-14 09:24:59
|
that's why jpegli does not do anything related to them
|
|
|
|
JendaLinda
|
2024-05-14 09:25:08
|
That would make sense, but people say jpegs are actually 12 bits.
|
|
2024-05-14 09:43:05
|
So I did another experiment. I took a completely basic grayscale jpeg, decoded it using djpegli to 16 bit PNG a it has indeed more than 256 shades of gray. So these had to come from somewhere.
|
|
2024-05-14 09:49:51
|
This still isn't clear to me how it works exactly, but considering jpeg being 12 bits and observing that 8 bit quant table is enough to completely shred the contents of the image, 16 bit quant table is simply useless and that's my point. 😉
|
|
|
lonjil
|
|
JendaLinda
That would make sense, but people say jpegs are actually 12 bits.
|
|
2024-05-15 02:13:34
|
8 bit jpegs use 12-bit dct coefficients and 12 bit jpeg uses 16 bit coefficients
|
|
|
|
JendaLinda
|
2024-05-15 07:55:59
|
Ah that makes sense. So it's just overhead to improve precision. I suppose decoders are free to use the full depth of DCT coefficients but most of them didn't do it.
Anyway, I think 8 bit quantization tables would be enough for high quality 12 bit jpegs as well. Considering that q=90 the constants are around 20, so for 12 bit, the equivalent would be 80. But I guess they just added the option for those who want to make heavily compressed HDR images.
|
|
2024-05-15 09:52:07
|
Actually I've noticed that cjpegli uses coarser quantization values than cjpeg for chroma, presumably as a choice instead of chroma subsampling. That could actually make use of 16 bit quantization tables.
|
|
|
jonnyawsom3
|
2024-05-15 11:30:42
|
It still has chroma subsampling, it just doesn't change based on quality level
|
|
|
|
JendaLinda
|
2024-05-15 12:35:20
|
It's turned off by default.
|
|
|
_wb_
|
2024-05-15 01:10:53
|
8-bit jpegs are internally 12-bit, 12-bit jpegs are internally 16-bit. Probably the 16-bit quant tables are only useful for 12-bit jpegs — though I imagine you may want to use high quantization factors for the highest frequencies also for 8-bit jpegs when doing low quality encoding — a factor like 300 or 400 is still meaningful when the coeffs themselves are 12-bit.
|
|
|
|
JendaLinda
|
|
_wb_
8-bit jpegs are internally 12-bit, 12-bit jpegs are internally 16-bit. Probably the 16-bit quant tables are only useful for 12-bit jpegs — though I imagine you may want to use high quantization factors for the highest frequencies also for 8-bit jpegs when doing low quality encoding — a factor like 300 or 400 is still meaningful when the coeffs themselves are 12-bit.
|
|
2024-05-15 01:34:42
|
Thank you for clarification.
djpegli seems to use all 12 internal bits while decoding an "8 bit jpeg" to 16 bit png.
I don't see any way to select the "12 bit jpeg" in cjpegli as 16 bit png will encode just into "8 bit jpeg".
|
|
|
_wb_
|
2024-05-15 01:36:37
|
yes, jpegli only encodes 8-bit jpeg — 12-bit jpeg is not commonly supported by anything so if you go there, you lose interoperability
|
|
2024-05-15 01:37:04
|
interoperability is the main selling point of jpegli; if you don't care about that, it's better to use jxl instead
|
|
|
|
JendaLinda
|
|
_wb_
yes, jpegli only encodes 8-bit jpeg — 12-bit jpeg is not commonly supported by anything so if you go there, you lose interoperability
|
|
2024-05-15 04:44:55
|
Thank you for explanation. That also explains I could decode jpegs produced by cjpegli with ancient decoders.
If both encoder and decoder attempt to use the full 12 bits in 8 bit jpeg, could they reach more precision than 8 bits?
|
|
|
lonjil
|
2024-05-15 04:50:46
|
jpegli uses 32-bit floating point math internally
|
|
2024-05-15 04:57:06
|
and I believe libjpeg-turbo uses 16-bit integer math by default actually
|
|
|
|
JendaLinda
|
2024-05-15 05:01:06
|
So in principle it's possible to get higher than 8 bit precision in "8 bit jpeg" if the source is more than 8 bits as well.
|
|
|
lonjil
|
2024-05-15 05:01:28
|
it's a bit more complicated than that
|
|
2024-05-15 05:01:45
|
The DCT doesn't result in even precision
|
|
2024-05-15 05:02:09
|
A very noisy 8x8 block will have an effective bit depth that's *lower* than 8 bits.
|
|
2024-05-15 05:02:31
|
While a smooth gradient can have up to 10.5 bits of precision
|
|
2024-05-15 05:03:27
|
12-bit DCT was chosen so that the inherent loss of the DCT wouldn't be *too* bad in any situation. As a side effect it can be better than their goal in other situations.
|
|
|
|
JendaLinda
|
2024-05-15 05:03:40
|
I knew the extra bits gained after decoding a jpeg encoded from 8-bit source are just compression artifacts.
|
|
|
lonjil
|
|
|
JendaLinda
|
2024-05-15 05:06:10
|
One just can't tell if the extra precision is valid or not.
|
|
|
jonnyawsom3
|
2024-05-15 05:09:03
|
jpegli tries to make use of that extra precision, since banding is most visible in smooth areas, where the effective bitdepth reaches 10.5
|
|
|
|
JendaLinda
|
2024-05-15 05:13:14
|
Sure it's better to try to use the maximum of the available precision.
|
|
2024-05-15 05:20:06
|
Even the 16 bit quantization tables might be useful in some cases. cjpegli by default uses a few values around 200 in the chroma tables and these could go over 255 in lower quality settings, although 16 bit quantization tables are not compatible with baseline jpeg.
|
|
2024-05-17 06:38:56
|
ECT can save a few bytes in pngs already optimized by oxipng. Although I came across a file that was already perfectly compressed by pngout and ect couldn't improve it. Deflate is simply hit and miss. I'm trying both `--allfilters` and `--allfilters-b` but the latter doesn't seem to do any better. I will continue experimenting.
|
|
|
Fox Wizard
|
2024-05-17 06:41:47
|
On what image though? <:thinkies:854271204411572236>
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 09:03:47
|
time to blow up our PCs [⠀](https://cdn.discordapp.com/emojis/1194236343220441099.webp?size=48&quality=lossless&name=UwU)
|
|
|
JendaLinda
ECT can save a few bytes in pngs already optimized by oxipng. Although I came across a file that was already perfectly compressed by pngout and ect couldn't improve it. Deflate is simply hit and miss. I'm trying both `--allfilters` and `--allfilters-b` but the latter doesn't seem to do any better. I will continue experimenting.
|
|
2024-05-17 09:04:54
|
you know you can use slower compression settings like `-9xxxx` right ? Don't go with `-99999` tho <:KekDog:805390049033191445>
|
|
2024-05-17 09:05:10
|
also, use `--mt-deflate`
|
|
|
|
JendaLinda
|
|
TheBigBadBoy - 𝙸𝚛
also, use `--mt-deflate`
|
|
2024-05-17 09:17:27
|
Didn't know about more 9s, the help suggests just one.
--mt-deflate is juts to enable multithreading? oxipng uses multiple threads by default.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 09:18:11
|
yeah --mt-deflate is multithreading, and almost always gives smaller output (than without)
|
|
|
|
JendaLinda
|
2024-05-17 09:19:36
|
Anyway, I don't think it's worth crunching a single image for hours just to save a couple bytes. But I will give it a try juts for fun.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 09:22:13
|
well you could go with simple `-99`, ..., `-90050`
they are far from "encoding during hours"
|
|
|
|
JendaLinda
|
|
TheBigBadBoy - 𝙸𝚛
well you could go with simple `-99`, ..., `-90050`
they are far from "encoding during hours"
|
|
2024-05-17 09:38:11
|
You mean I'm underestimating?
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 09:38:57
|
overestimating [⠀](https://cdn.discordapp.com/emojis/895863009820414004.webp?size=48&quality=lossless&name=av1_thinkies)
|
|
|
|
JendaLinda
|
2024-05-17 10:00:16
|
Just -9 took half an hour.
|
|
|
jonnyawsom3
|
2024-05-17 10:24:15
|
With the multithreading it scales almost linearly, and --allfilters-b does add a lot more slowdown in my experience
|
|
|
|
JendaLinda
|
2024-05-17 10:37:23
|
Yay, `-99 --allfilters-b --mt-deflate` have beaten pngout finally.
|
|
|
Fox Wizard
|
|
TheBigBadBoy - 𝙸𝚛
you know you can use slower compression settings like `-9xxxx` right ? Don't go with `-99999` tho <:KekDog:805390049033191445>
|
|
2024-05-17 11:49:38
|
Why not? <:KittyLaugh:1126563616343216268>
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 11:50:02
|
because **he** does not want to encoding during days <:KekDog:805390049033191445>
|
|
2024-05-17 11:50:55
|
I still need to find what you did to better compress after jpegultrascan [⠀](https://cdn.discordapp.com/emojis/654081052108652544.webp?size=48&quality=lossless&name=av1_Hmmm)
|
|
|
Fox Wizard
|
2024-05-17 11:51:26
|
All you need to find out is to donate some pizzas <:KittyPizza:1147750033018605680>
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 11:51:55
|
well I can, but you need to go down here lol
|
|
2024-05-17 11:52:13
|
pretty sure it's just Huffman tables
|
|
2024-05-17 11:52:23
|
but then I need to find the right tool
|
|
|
JendaLinda
Yay, `-99 --allfilters-b --mt-deflate` have beaten pngout finally.
|
|
2024-05-17 11:53:18
|
why would you even do --allfilters <:KekDog:805390049033191445>
that's just a waste of time compared to what you want
|
|
|
Fox Wizard
|
|
TheBigBadBoy - 𝙸𝚛
well I can, but you need to go down here lol
|
|
2024-05-17 11:54:51
|
Perhaps someday. Then I do expect one of those XL family pizzas though <:KekDog:884736660376535040>
|
|
2024-05-17 11:55:06
|
~~And the answer to why my jpegs are slightly smaller will disappoint you lmao~~
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 11:56:12
|
[⠀](https://cdn.discordapp.com/emojis/890866831047417898.webp?size=48&quality=lossless&name=SadCheems)
|
|
|
jonnyawsom3
|
2024-05-17 12:18:49
|
~~JXL Family Pizzas~~
|
|
|
|
JendaLinda
|
|
TheBigBadBoy - 𝙸𝚛
why would you even do --allfilters <:KekDog:805390049033191445>
that's just a waste of time compared to what you want
|
|
2024-05-17 12:26:07
|
Because I don't know what I'm doing 😄
I thought allfilters means try all filters, to find the best combination, right?
Anyway. Is there any clear explanation, how the level settings -9...99999 works? it seems that different parts of the numbers are assigned to different parameters internally.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 12:30:17
|
yeah allfilters tries all filters obviously, but your saves will be negligible compared to increasing `-9xxxxx`
iirc the first number is use for ECT to know which compression "mechanisms" to try
and others are number of zopfli (et al.) iterations
but I'm not sure
|
|
|
jonnyawsom3
|
2024-05-17 12:35:47
|
I think each number corresponds to a different setting inside ECT, based on people changing each digit at a time to get savings rather than just higher number=better
|
|
|
|
afed
|
2024-05-17 12:40:26
|
```-#
Select compression level [1-9] (default: 3).
For detailed information on performance read Performance.html.
Advanced usage:
A different syntax may be used to achieve even more compression for deflate compression if time (and efficiency) is not a concern. If the value is above 10000, the blocksplitting-compression cycle is repeated # / 10000 times. If # % 10000 is above 9, level 9 is used and the number of iterations of deflate compression per block is set to # % 10000. If # % 10000 is 9 or below, this number specifies the level.
--pal_sort=n
Attempt to sort the palette of PNG images. Only has an effect on files where palette may be used. n specifies the number of different strategies tried, the maximum is 120. Multiplies the compression time.
--allfilters
Try most png filter strategies. Multiplies the compression time.
--allfilters-b
Try all the filter strategies of allfilters and also the ‘brute force’ genetic filtering, which is even slower. Genetic filtering may be ended by the user, more information on the command line.
--allfilters-c
Try several png filter strategies. Cheaper than regular allfilters, but still improves compression.
--mt-deflate
--mt-deflate=n
Use several threads to compress png, gzip, and zip files. Multithreading is not used on very small files. If a number is specified, n threads are used, otherwise the number of logical cores is used. May decrease compression ratio.
```
|
|
2024-05-17 12:48:59
|
```fhanau: You could try replacing -10080 with some bigger numbers, e.g. "-20100" or "-30140" or "-50300" or "-60500", although I haven't tested these settings. Note that --mt-deflate may decrease the compression ratio, although this should not happen when using very high settings.```
so there are some balanced values, higher than -9, but not so slow, like: `-20100 -30140 -50300 -60500`, some optimizers use `-30060` as the most optimal one
|
|
|
|
JendaLinda
|
|
afed
```fhanau: You could try replacing -10080 with some bigger numbers, e.g. "-20100" or "-30140" or "-50300" or "-60500", although I haven't tested these settings. Note that --mt-deflate may decrease the compression ratio, although this should not happen when using very high settings.```
so there are some balanced values, higher than -9, but not so slow, like: `-20100 -30140 -50300 -60500`, some optimizers use `-30060` as the most optimal one
|
|
2024-05-17 12:53:18
|
So `-30060` means 3 full cycles of 60 iterations at zlib level 9, if I understand correctly?
And `-99` is just 99 iterations at zlib level 9, right?
|
|
|
|
afed
|
2024-05-17 12:54:00
|
seems so
|
|
|
|
JendaLinda
|
2024-05-17 12:57:48
|
Alright. Thank you.
|
|
|
jonnyawsom3
|
2024-05-17 01:06:36
|
huh, turns out ECT used to have mp3 support too, but was disabled due to metadata corruption
|
|
2024-05-17 01:07:38
|
It's also 90% if statements for every option https://github.com/fhanau/Efficient-Compression-Tool/blob/master/src/main.cpp
|
|
|
|
JendaLinda
|
2024-05-17 01:08:44
|
Yeah I've tried to read the source but got lost.
|
|
2024-05-17 01:25:59
|
Some people do use `-30060 --allfilters-b --pal_sort=120` together.
|
|
|
|
afed
|
|
|
JendaLinda
|
2024-05-17 01:43:36
|
I suppose those heavy settings don't work on jpeg.
|
|
2024-05-17 01:56:28
|
It seems ECT considers only modes 1...5+ in jpeg compression.
|
|
2024-05-17 02:01:58
|
I'm sure that the arrangement of scans and Huffman could be brute forced too.
|
|
2024-05-17 02:49:17
|
So, -99 can be better than -30060
|
|
|
|
afed
|
2024-05-17 02:56:25
|
just -99 probably doesn't work, because it's supposed to be `If the value is above 10000`
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
afed
just -99 probably doesn't work, because it's supposed to be `If the value is above 10000`
|
|
2024-05-17 03:01:48
|
-99 does work
```$ ect -9 -gzip --mt-deflate in.gz
Processed 1 file
Saved 8.16KB out of 8.72MB (0.0914%)
$ ect -99 -gzip --mt-deflate in.gz
Processed 1 file
Saved 27B out of 8.71MB (0.0003%)```, same as -00099, so no blocksplitting-compression cycle repeat
|
|
|
|
afed
|
2024-05-17 03:04:10
|
then maybe `-90099`?
or yeah, just -00099
|
|
|
|
JendaLinda
|
2024-05-17 03:10:48
|
Or I could do something like -30100
|
|
|
|
afed
|
2024-05-17 03:15:14
|
seems like higher than 60 there are significant slowdowns without much improvement, so it's not just a random number
and also not always higher is better, except for `-99999`
|
|
|
|
JendaLinda
|
2024-05-17 03:20:19
|
-60 couldn't compress the file already optimized by pngout, -99 can.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 03:20:58
|
now, I wonder if going above 9 for blocksplitting-compression cycles would be nice
|
|
|
|
afed
|
|
JendaLinda
-60 couldn't compress the file already optimized by pngout, -99 can.
|
|
2024-05-17 03:26:17
|
for some already highly optimized images maybe, but like for typical random images it might not be very optimal or only slightly better with much slower optimization
|
|
|
|
JendaLinda
|
2024-05-17 03:26:39
|
Yeah I suppose -99999 is something like -e 11 in cjxl, you can use it if you want to turn the PC into the space heater.
|
|
|
afed
for some already highly optimized images maybe, but like for typical random images it might not be very optimal or only slightly better with much slower optimization
|
|
2024-05-17 03:28:12
|
I've discovered that pngout works the best for flat colored images, where the PNG filter "none" is the optimal filter.
|
|
2024-05-17 03:29:42
|
An these are then hard to compress by anything else.
|
|
2024-05-17 03:33:42
|
PNGs using mixed filters can be usually compressed by oxipng or ect pretty easily.
|
|
2024-05-17 06:26:17
|
According to the documentation, `--mt-deflate` may decrease the compression ratio. Shouldn't it be better to run ECT without multiple threads?
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-17 07:08:59
|
https://tenor.com/view/try-it-and-see-give-it-a-try-try-try-and-see-try-it-yourself-gif-24095805
|
|
2024-05-17 07:09:16
|
But from my tests, --mt-deflate gives almost always a smaller file
|
|
2024-05-17 07:09:26
|
and it's far faster
|
|
|
jonnyawsom3
|
2024-05-17 07:20:17
|
If I recall, --mt-deflate tries to guess where block boundaries would be best, and then can multithread based on that as a very nice bonus, but sometimes it won't find any splits and will stay singlethreaded
|
|
|
|
JendaLinda
|
2024-05-17 09:12:20
|
--mt-deflate seems to be indeed slightly better. I don't understand why they tell the opposite in the docs.
|
|
2024-05-18 04:17:34
|
I see, `--mt-deflate` can actually decrease the compression ratio, sometimes it produces a file bigger by 1 byte, that's really significant difference. 😄
|
|
|
Crite Spranberry
|
2024-05-21 01:26:47
|
What is the best way to encode a jpeg?
It can either be preferably 2160p, but also 1440p or 1080p
It needs to be 250KB or less
WHat should I use and what settings should I use
|
|
2024-05-21 01:27:13
|
I would prefer lower resolution over weird blocking
|
|
|
username
|
|
Crite Spranberry
What is the best way to encode a jpeg?
It can either be preferably 2160p, but also 1440p or 1080p
It needs to be 250KB or less
WHat should I use and what settings should I use
|
|
2024-05-21 01:28:30
|
use jpegli which comes with the libjxl binaries: https://artifacts.lucaversari.it/libjxl/libjxl/latest/
|
|
2024-05-21 01:28:59
|
it's `cjpegli`
|
|
|
Crite Spranberry
|
2024-05-21 01:29:08
|
I've also heard about mozjpeg
|
|
|
username
|
2024-05-21 01:29:45
|
jpegli is intended to surpass mozjpeg
|
|
|
HCrikki
|
2024-05-21 01:30:23
|
use XL converter. you can select the desired final size in this app (and downsample/resize first) as well as with the official libjxl's terminal commands for cjpegli
|
|
2024-05-21 01:33:21
|
using distance should be preferable, starting with 0.5
unless you require an exact filesize, try slightly increasing distance values in 0.1-0.2 increments
|
|
|
Crite Spranberry
|
2024-05-21 03:25:17
|
Very cool python shit with QT6 awesome
|
|
2024-05-21 03:25:40
|
gotta do the funny
|
|
|
eddie.zato
|
2024-05-21 03:26:51
|
`cjpegli` can targeting the size:
```
> cjpegli --target_size=250000 8.png 0.jpg
Read 3508x2480 image, 2325205 bytes.
Encoding [YUV d1.000 AQ p2 OPT]
Compressed to 250164 bytes (0.230 bpp).
3508 x 2480, 15.401 MP/s [15.40, 15.40], , 1 reps, 1 threads.
```
|
|
|
Crite Spranberry
|
2024-05-21 03:35:23
|
cursed ass program
|
|
2024-05-21 03:35:25
|
Can't even debug it
|
|
|
|
JendaLinda
|
2024-05-21 10:41:00
|
jpegli uses "RGB jpeg" to store XYB, but is it possile to skip the XYB transform and store RGB diretcly? There are niche use cases, where any color transformation is undesirable.
Different quantization tables are also used for each of the XYB channels but "RGB jpegs" usually use the "luma" table for all three channels.
|
|
|
jonnyawsom3
|
2024-05-21 10:51:03
|
XYB is opt in, it already doesn't use it by default
|
|
|
lonjil
|
2024-05-21 10:52:21
|
but if you don't use XYB, it uses YCbCr
|
|
2024-05-21 10:52:32
|
JendaLinda wants to store RGB
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-21 12:19:48
|
you should be able to use RGB encoding with this arg
``` -x key=value, --dec-hints=key=value
color_space indicates the ColorEncoding, see Description();
icc_pathname refers to a binary file containing an ICC profile.```but idk where is that `Description()` <:KekDog:805390049033191445>
|
|
|
|
JendaLinda
|
2024-05-21 01:03:45
|
Will I get RGB with XYB quant tables? 😄
|
|
2024-05-21 01:06:07
|
I think I will be using jpegli only for YCbCr for now.
|
|
|
spider-mario
|
|
TheBigBadBoy - 𝙸𝚛
you should be able to use RGB encoding with this arg
``` -x key=value, --dec-hints=key=value
color_space indicates the ColorEncoding, see Description();
icc_pathname refers to a binary file containing an ICC profile.```but idk where is that `Description()` <:KekDog:805390049033191445>
|
|
2024-05-21 02:15:40
|
that’s unrelated to RGB vs. YCbCr JPEG, it’s just the colour profile of the de-YCbCr’d-if-needed pixel data
|
|
2024-05-21 02:16:11
|
(sRGB or Display-P3 or ProPhoto or…)
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-21 02:16:28
|
ohhhhh
|
|
2024-05-21 02:16:53
|
[⠀](https://cdn.discordapp.com/emojis/1194236617813147729.gif?size=48&quality=lossless&name=NOTED)
|
|
|
spider-mario
|
2024-05-21 02:17:34
|
the format is indeed a bit cryptic but it’s basically a series of 3-character identifiers that specify the type of colourspace (RGB vs. greyscale), the white point, the primaries, the rendering intent and the transfer function
|
|
2024-05-21 02:17:46
|
for example, sRGB with relative rendering intent is `RGB_D65_SRG_Rel_SRG`
|
|
2024-05-21 02:18:17
|
Rec. 2020 + PQ and perceptual rendering intent is `RGB_D65_202_Per_PeQ`
|
|
2024-05-21 02:18:41
|
Display-P3, `RGB_D65_DCI_Rel_SRG`
|
|
2024-05-21 02:18:42
|
etc.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-21 02:21:08
|
thanks [⠀](https://cdn.discordapp.com/emojis/674256399412363284.webp?size=48&quality=lossless&name=av1_pepelove)
|
|
|
|
JendaLinda
|
2024-05-21 03:29:24
|
I thought this only sets the color profiles but doesn't change the behavior of the encoder.
Anyway. XYB requires an ICC profile for decoding. What happens if the source image already uses non standard ICC profile? Will the ICC profiles be somehow merged together? Or can ICC profiles stack on top of each other?
Once I came across an image, where there was an error during editing and the ICC profiles had to be applied twice in a row to get the correct colors. This had to be done manually as I didn't find a way to double the strength of the ICC profile.
|
|
|
spider-mario
|
2024-05-21 03:31:54
|
if an image with a custom ICC profile is converted to an XYB JPEG, the colours are converted from the colourspace described by that profile to XYB, instead of from sRGB
|
|
2024-05-21 03:31:59
|
it’s nothing fundamentally different
|
|
2024-05-21 03:32:34
|
(although I’m not sure we “scale” XYB to make room for wider gamuts)
|
|
|
|
JendaLinda
|
2024-05-21 03:39:01
|
Ah so the original colors are moved around according to the original ICC profiles already during the conversion to XYB, so the conversion from XYB to RGB doesn't need to take the original ICC profiles into account, right?
|
|
|
spider-mario
|
2024-05-21 03:42:26
|
correct
|
|
2024-05-21 03:45:10
|
XYB is absolute and is therefore able to uniquely identify the absolute colours represented by the original pixel data as interpreted using the original ICC profile
|
|
|
|
JendaLinda
|
2024-05-21 03:57:48
|
So there's the advantage of XYB JPEG. Having normalized colors, so no more fiddling with different color profiles. And if something doesn't work correctly, one can tell on the first glance.
|
|
|
_wb_
|
|
spider-mario
(although I’m not sure we “scale” XYB to make room for wider gamuts)
|
|
2024-05-21 05:03:53
|
Wide gamut just means X and B have a bigger range than what they have when the source is sRGB, just like HDR just means Y has a bigger range than when the source is SDR. More or less.
|
|
|
spider-mario
|
2024-05-21 05:07:41
|
right, but for JPEG/ICC, we need to map some specific range of X and B to 0-1, and I have some vague memory of <@179701849576833024> and I doing that for the range spanned by sRGB, but I’m not sure we ever changed the mapping to be dynamic based on source gamut
|
|
|
|
veluca
|
2024-05-21 05:08:38
|
I also have a vague memory of that
|
|
|
_wb_
|
2024-05-21 07:12:54
|
Ah, I see. Didn't you just make the range large enough to cover P3 or something? I don't think you need much more for that...
|
|
|
|
JendaLinda
|
2024-05-22 04:03:40
|
People have made animated pixel art movies in gif format that are several minutes in length. Gif apparently can handle animations of hundreds or thousands of frames without problems.
|
|
|
Meow
|
2024-05-23 03:28:09
|
https://maskray.me/blog/2024-04-23-when-qoi-meets-xz
|
|
|
yoochan
|
2024-05-23 08:46:06
|
can't they compare it to jxl ?
|
|
|
w
|
2024-05-23 08:51:10
|
they can only use toy formats
|
|
|
spider-mario
|
|
Meow
https://maskray.me/blog/2024-04-23-when-qoi-meets-xz
|
|
2024-05-23 08:55:01
|
|
|
2024-05-23 08:55:12
|
(oops, this is larger than I thought)
|
|
|
|
JendaLinda
|
2024-05-23 08:58:46
|
I thought QOI might be useful for embedded system like Arduino or so, but QOI doesn't support low color graphics, so RLE it is.
|
|
|
Meow
|
|
spider-mario
(oops, this is larger than I thought)
|
|
2024-05-23 09:50:52
|
Yep the results aren't that impressive when comparing to BMP or TIFF
|
|
|
|
JendaLinda
|
2024-05-23 01:22:13
|
I thought PCX might have been a fair comparison.
|
|
|
Meow
|
2024-05-23 03:31:24
|
HEIC should be tested as well
|
|
|
|
JendaLinda
|
2024-05-23 03:54:19
|
Alright, here goes HEIC as "near lossless"
`
Image 1 20009 bytes
Image 2 27925 bytes
Image 3 117341 bytes
`
No idea what settings Gimp uses.
|
|
|
Meow
|
2024-05-23 03:56:01
|
Tested grayscale before and HEIC was the biggest
|
|
|
|
JendaLinda
|
2024-05-23 03:57:39
|
HEIC is completely broken in Winddows 11. It decodes as white rectangle.
|
|
2024-05-23 04:17:10
|
I did some tests with jpegli. Even at distance 0.5 jpegli tends to blur chroma so it has similar effect as choma subsampling. I think at very short distances chroma shouldn't be blurred that much.
|
|
|
lonjil
|
2024-05-23 05:15:41
|
Just like libjxl did?
|
|
|
|
JendaLinda
|
2024-05-23 05:41:29
|
I'm not sure but does the typical decrease in color saturation around black lines.
|
|
|
Cool Doggo
|
|
Meow
https://maskray.me/blog/2024-04-23-when-qoi-meets-xz
|
|
2024-05-23 06:19:37
|
does this not just ruin the point of using qoi in the first place?
|
|
|
Meow
|
2024-05-23 06:50:34
|
Better to compare the speeds as well
|
|
|
Demiurge
|
2024-05-24 01:58:47
|
QOI is a nice experimental pilot in designing simpler data formats that don't require years of study to understand. Hopefully its shortcomings can one day be addressed in a way that doesn’t make it substantially more complex. Perhaps a qoi2
|
|
2024-05-24 01:59:50
|
There is clearly real demand and value in simplicity
|
|
|
LMP88959
|
2024-05-24 02:32:28
|
if anything it is a great way for people to get into compression
|
|
2024-05-24 02:32:31
|
c:
|
|
|
yoochan
|
2024-05-24 05:13:44
|
A great toy project... But if a more complex format can compress better and faster, it means simplicity is not the only meaningful criteria
|
|
|
Meow
|
|
Demiurge
QOI is a nice experimental pilot in designing simpler data formats that don't require years of study to understand. Hopefully its shortcomings can one day be addressed in a way that doesn’t make it substantially more complex. Perhaps a qoi2
|
|
2024-05-24 08:18:20
|
The author clearly announced that version 1.0 is the final
|
|
2024-05-24 08:19:01
|
There have been many forks however
|
|
|
username
|
2024-05-24 08:33:47
|
the QOI format supports other colorspaces but the spec only defines sRGB and nothing else which sucks https://qoiformat.org/qoi-specification.pdf
|
|
|
Meow
|
2024-05-24 09:14:24
|
GameMaker has implemented QOI for long time
|
|
|
username
|
2024-05-24 09:16:15
|
Google Earth Pro has QOI support strangely enough
|
|
|
Meow
|
|
username
Google Earth Pro has QOI support strangely enough
|
|
2024-05-24 09:46:00
|
For what...?
|
|
|
Demiurge
|
2024-05-24 09:47:36
|
I think people want formats that are simple yet good enough. Only time simplicity should be sacrificed is if it leads to significant benefits and it usually doesn't. For example, most of the bitstream features of jpegxl, like spline detection and removal, or detection and separation of an image into multiple layers for more efficient encoding, are probably not going to be used by any actual encoder any time soon because of the work and complexity involved
|
|
2024-05-24 09:52:25
|
Even though theoretically it could improve quality and efficiency of lossy a lot, and layer detection might even benefit lossless encoding by for example detecting and separating solid shapes and gradients
|
|
|
lonjil
|
2024-05-24 09:53:01
|
if you want something simple just use png
|
|
|
Demiurge
|
2024-05-24 09:53:20
|
I think qoi was made because png isn't simple
|
|
|
lonjil
|
2024-05-24 09:55:16
|
it's just throwing bytes into Deflate
|
|
|
Demiurge
|
2024-05-24 09:55:42
|
No, That would be farbfeld
|
|
2024-05-24 09:55:59
|
:)
|
|
|
lonjil
|
2024-05-24 09:56:05
|
yeah yeah it has headers and a tiny bit of filtering too, big deal
|
|
2024-05-24 09:56:39
|
just use ppm.gz if you want something extra simple
|
|
|
w
|
2024-05-24 09:57:27
|
png deflate is already way simpler and better than qoi
|
|
2024-05-24 09:57:30
|
people dont know what they want
|
|
|
Demiurge
|
2024-05-24 09:58:15
|
Someone wanted something even simpler but still good enough for their purposes, unfortunately they left some very low hanging fruit on the table probably
|
|
2024-05-24 10:03:00
|
Like for a lossless format it would be nice to store HDR images, floats, and both types of alpha
|
|
|
username
|
|
Meow
For what...?
|
|
2024-05-24 10:04:41
|
for exporting in the "movie maker", QOI was added in version 7.3.6
https://support.google.com/earth/answer/40901
|
|
|
3DJ
|
2024-05-24 10:04:53
|
Anyone know how to get the ffmpeg encoder commands used in a video?
Like I wanna replicate the encoding from one video to apply it to another file
|
|
|
yoochan
|
2024-05-24 10:41:02
|
the question is unclear ... what did you tried ?
|
|
2024-05-24 10:41:39
|
(and this discord have users and fans of ffmpeg but we are more versed into still images)
|
|
|
w
|
2024-05-24 10:42:30
|
real answer is you can only do that if the person tagged the video with the commands
|
|
2024-05-24 10:42:36
|
so you just look at the tags
|
|
|
Demiurge
|
2024-05-24 11:27:25
|
the settings are not automatically stored in the tags anywhere at least for most codecs
|
|
2024-05-24 11:27:33
|
Afaik
|
|
|
Meow
|
|
username
for exporting in the "movie maker", QOI was added in version 7.3.6
https://support.google.com/earth/answer/40901
|
|
2024-05-24 12:07:34
|
Uh I didn't know this so-called "Movie Maker" either
|
|
|
damian101
|
|
Demiurge
Someone wanted something even simpler but still good enough for their purposes, unfortunately they left some very low hanging fruit on the table probably
|
|
2024-05-24 03:22:28
|
Does it internally convert to YCoCg-R for lossless compression? Because that's usually some very cheap compression gain...
|
|
|
|
JendaLinda
|
2024-05-24 06:03:13
|
Nothing beats RLE in simplicity.
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-26 12:28:35
|
<@219525188818042881> by any chance, do you know a Webp optimizer other than cwebp ?
I don't even know if lossy-webp files can be losslessly recompressed [⠀](https://cdn.discordapp.com/emojis/654081052108652544.webp?size=48&quality=lossless&name=av1_Hmmm)
|
|
|
Fox Wizard
|
|
TheBigBadBoy - 𝙸𝚛
<@219525188818042881> by any chance, do you know a Webp optimizer other than cwebp ?
I don't even know if lossy-webp files can be losslessly recompressed [⠀](https://cdn.discordapp.com/emojis/654081052108652544.webp?size=48&quality=lossless&name=av1_Hmmm)
|
|
2024-05-26 01:44:20
|
No sadly. I never really use WebP
|
|
2024-05-26 01:46:04
|
Pingo claims it can optimize it, but haven't tried it yet
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-26 01:51:51
|
oh, gonna try it thx
|
|
|
Fox Wizard
Pingo claims it can optimize it, but haven't tried it yet
|
|
2024-05-26 03:14:29
|
only thing it can is to convert PNG (perhaps others?) to Webp <:kekw:808717074305122316>
|
|
|
Fox Wizard
|
|
TheBigBadBoy - 𝙸𝚛
only thing it can is to convert PNG (perhaps others?) to Webp <:kekw:808717074305122316>
|
|
2024-05-26 03:20:57
|
Should also be able to optimize lossless webp
|
|
2024-05-26 03:22:08
|
Or well, may or may not result in smaller files than cwebp. Might try if it's any better when I'm home <:KekDog:884736660376535040>
|
|
2024-05-26 03:22:39
|
~~I would be disappointed if it's much worse than cwebp lmao~~
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
Fox Wizard
Should also be able to optimize lossless webp
|
|
2024-05-26 03:24:07
|
well at least on my end it keeps crashing for webp input
|
|
2024-05-26 03:24:30
|
but perhaps bc of wine/linux
|
|
|
Fox Wizard
|
2024-05-26 03:24:34
|
Lmao
|
|
2024-05-26 03:25:08
|
Wouldn't be that surprised if it only supports png and jpg input
|
|
2024-05-26 03:29:54
|
Oh hey, I'm pretty close to your freezer where your pizzas are
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-05-26 03:36:46
|
[⠀](https://cdn.discordapp.com/emojis/853492103145324554.webp?size=48&quality=lossless&name=woag)
|
|
|
|
JendaLinda
|
2024-05-27 02:38:44
|
Why do people still use Windows icons in bitmap format? PNG icons are supported since Windows Vista. It would make sense if the programs ran on Windows XP as well.
|
|
2024-05-27 02:40:46
|
In Gimp, it's just a matter of a checkbox.
|
|
|
username
|
2024-05-27 02:45:55
|
most programs and tools only output Windows XP compatible .ico files and the people making .ico files don't know the history or features of them and just see ico files as a collection of multiple images in different sizes and nothing else and I've also seen instances where people don't even know that
|
|
2024-05-27 02:48:51
|
Windows XP compatible in the sense that only the higher resolution sizes that aren't supported by XP are PNG while everything else is bitmap although I have seen some cases where every size is bitmap but that's pretty rare
|
|
2024-05-27 02:50:00
|
also I would highly recommend these tools when doing work with pre-existing ico files: https://github.com/jtippet/IcoTools
|
|
|
|
JendaLinda
|
2024-05-27 02:50:22
|
I don't know what software people use for drawing icons. It's apparently two decades behind.
|
|
2024-05-27 02:51:06
|
Discord is one example where all icon sizes are in bitmap format.
|
|
|
username
|
2024-05-27 02:51:32
|
GIMP is one of the only existing pieces of software that allows deciding what is and isn't a PNG
|
|
2024-05-27 02:52:05
|
even programs dedicated to icons don't support making lower sizes PNG
|
|
2024-05-27 02:52:45
|
it's a suprsisingly rare feature for software that allows creation of ico files
|
|
2024-05-27 02:55:33
|
also Discord is a beacon for everything not to do when making software
|
|
2024-05-27 02:57:34
|
so I'm not surprised they somehow managed to make a horrible ico file that's worse then what almost every single piece of software outputs
|
|
2024-05-27 02:58:33
|
kinda like how they somehow managed to break one of the core fundamentals of Chromium's/Electron's architecture
|
|
2024-05-27 02:59:19
|
and also how every single time you open Discord it wastes disk writes re-creating the same PNG files
|
|
|
|
JendaLinda
|
|
username
also I would highly recommend these tools when doing work with pre-existing ico files: https://github.com/jtippet/IcoTools
|
|
2024-05-27 03:01:50
|
This looks great. I was making some icons some time ago and I had to write my own tool to pack the pngs into ico.
|
|
2024-05-27 03:03:57
|
Gimp could make png icons but there were not thoroughly optimized.
|
|
|
Demonik
|
|
username
kinda like how they somehow managed to break one of the core fundamentals of Chromium's/Electron's architecture
|
|
2024-05-28 03:21:02
|
what exactly? while I hate electron I need more things to hate about discord
|
|
|
username
|
|
Demonik
what exactly? while I hate electron I need more things to hate about discord
|
|
2024-05-28 03:27:12
|
one of Chromium's main design points is it's multi-process architecture and one of it's core intentions/benefits is stability where if one of the non-main processes crashes or goes down then it can just be restarted without taking down the whole application however Discord somehow manages to break this, Go to pretty much any Chromium based browser or Electron based app and try killing the GPU process and watch as they all recover just fine meanwhile with Discord the entire thing goes down.
|
|
2024-05-28 03:28:58
|
Discord is one of the worst pieces of software yet it's on a very **very** very large amount of people's computers and is used every single day
|
|
2024-05-28 03:32:36
|
the total combined amount of computer resources that have been wasted with all of Discord's incompetence must be astronomical
|
|
|
Demonik
|
|
username
Discord is one of the worst pieces of software yet it's on a very **very** very large amount of people's computers and is used every single day
|
|
2024-05-28 03:42:16
|
that I can agree with
|
|
2024-05-28 03:43:12
|
although I would say that applies to nearly every piece of electron based software (except Code), but discord manages to stand out even amongst them
|
|
|
username
|
2024-05-28 03:44:13
|
yeah Discord goes above and beyond to not just be Electron levels of bad but somehow even worse
|
|
|
Demonik
|
|
username
the total combined amount of computer resources that have been wasted with all of Discord's incompetence must be astronomical
|
|
2024-05-28 03:44:16
|
I just recently got a new PC and it's incredible for me to see discord use more CPU AND GPU than Doom Eternal at maxed settings with raytracing <:facepalm:884892069225717840>
|
|
|
spider-mario
|
2024-05-28 03:45:02
|
odd, I’ve never observed anything like that
|
|
2024-05-28 03:45:30
|
I don’t use its video streaming features much, though
|
|
|
username
|
2024-05-28 03:48:22
|
one of the other bad things about Discord is that every single time it updates Windows considers it a different program meaning that stuff like data usage and tray preferences get a new/different entry or reset
|
|
|
Demonik
|
2024-05-28 03:48:43
|
ah, yeah, I also have to add it to VPN every time as well
|
|
2024-05-28 03:48:55
|
because it just creates new folder for every update
|
|
2024-05-28 03:49:19
|
even worse it sometimes moves between ProgramData and AppData between updates randomly
|
|
2024-05-28 03:49:31
|
for no apparent reason
|
|
|
username
|
|
Demonik
because it just creates new folder for every update
|
|
2024-05-28 03:50:50
|
I think Chromium based browsers have a similar update procedure yet don't have the same problem(s)
|
|
2024-05-28 03:51:24
|
there's probably some extra steps that they do that Discord just flat out doesn't
|
|
2024-05-28 03:52:45
|
this is awful.....
|
|
|
|
JendaLinda
|
|
username
one of the other bad things about Discord is that every single time it updates Windows considers it a different program meaning that stuff like data usage and tray preferences get a new/different entry or reset
|
|
2024-05-29 07:43:32
|
Ah so that's why Discord icon in system tray is still moving to hidden icons.
Discord was also disguised as Github updater in the startup program list, at some point.
|
|
|
Demiurge
|
2024-05-30 05:56:27
|
Um... Hot take but personally I think if you're foolish enough to think it's a good idea to "install" discord in the first place you kinda deserve what you have coming to ya...
|
|
2024-05-30 05:57:43
|
I can't believe so many of you apparently didn't see anything wrong with doing so.
|
|
2024-05-30 05:58:58
|
You should just have 1 browser window for all of your electron-based apps.
|
|
|
Quackdoc
|
2024-05-30 05:59:13
|
well at least dissent is comming eventually
|
|
2024-05-30 05:59:17
|
its mostly usable
|
|
|
|
JendaLinda
|
2024-05-30 07:59:27
|
Have you heard about JPEG Quant Smooth? It does pretty good job cleaning non-photo images that were "accidentally" saved as jpegs.
|
|