-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Large image error. #326
Comments
Is it possible to post the PNG itself? |
Yeah I can in a sec |
@BuyMyMojo Seriously, 1 GB PNG?! Perhaps 7Z/Zip before uploading anyplace. Let me see if any of my other tools can handle it… whenever I get it downloaded. |
I tried using PAQ on the png at some point and that only got it down to 870mb, the png itself is using the 100% compression straight out of blender. this isn't even the largest png I have ;) sorry for the large size either way |
I got & am working through it. Part of the size issues seem to be related to its 16-bit color channels (so 48-bit PNG), which I don't know that OxiPNG can handle anyway. Also, how many unique colors has it? I'm only on a 24-bit display, but my installation of IrfanView counts 50,894. (So, is the image functionally using 16-bit color?) Also, TweakPNG can load it, but can't really manipulate it. All to say, I'm not shocked that OxiPNG dies. |
Yeah it's a pretty over sized PNG, it's exported straight from blender at 16bit per colour so I doubt it out a cap on the unique colours |
16-bit should be supported by oxipng, however the issue seems to be that there's too much memory required and the executable is aborting when it attempts to allocate such a large amount of memory. However... I would think allocating 1.6GB (what the error messages shows) would not be a problem as long as the system has enough memory. I'm testing on a system with plenty of memory and still receiving an error. |
I'm running 32gb myself, at first I thought it was like an x32 executable error where the ram is limited to 2gb but 1.6 ≠ 2 lol |
any ideas on how my totally necessary images break oxipng? |
@BuyMyMojo Sorry, meant to report back yesterday. The level 9 toolchain for 64-bit FileOptimizer reduced this to 24-bit 262,663,070 bytes (which beats PAQ above & default OxiPNG below), but the original uncompressed image is roughly 2.3 GiB, which might well hit various 32-bit system limits, especially as OxiPNG might have to hold all that & the current working image in memory @ once. |
Oh I see, so if I'm understanding this right it should work but since the uncompressed size is larger then 2gb some 32bit parts of OxiPNG breaks? |
@BuyMyMojo That's an educated guess, since I don't have a deep understanding of a Win32 Rust exe. (I've been on 64-bit for around a decade.) @shssoichiro would probably be best equipped to answer on that basis. Also, a run on Win64 w/ sufficient memory would instructive. |
When I tried running it I did it on win64 with 32gb of ram, if you need me to run any builds to help test just give me a shout |
Indeed, the Windows release that @shssoichiro provides ( |
the 64 bit executable is just one update behind I guess |
Well, that seems to solve that, but it also seems to show OxiPNG isn't particularly great @ the compression, @ least w/ the defaults, as the image is brought down only to ~800MiB. |
I was able to knock a massive 2.8% more off using -Z afterwards ;), the image is particularly noisy already so it's probably not the easiest to compress anyway so can't really blame it too much |
I'd mentioned above the level 9 FileOptimizer toolchain losslessly brought it down to < ⅓ of that. |
How do you use the level 9 tool chain? |
N.B.: A level 9 FO run requires a serious time commitment on a file like this, often days of run-time.
Also, after run is completed, Shift F5 (to refresh/reset run info) & rerun (repeating until zero change) can often result in additional savings, but at equal time spent on original iteration. |
I'll make sure to give this a try |
it uses optipng instead of oxipng so it's super slow :'( |
Last I saw, FO's dev was waiting on a few refinements (APNG support, &c) before replacing OptiPNG w/ OxiPNG. |
I think they are just waiting for apng support? |
@BuyMyMojo How's your FO experience? |
I've been using FO for a few other files now so it's been good but I havn't ran it on the main file that started this because of some time constraints, I should be able to run it soon though and will get back to you about it. |
I think you're generally correct on most PNGs (in that 1 tool of the chain will end up making the largest savings on a given file — though which tool varies based on any number of reasons), but your Blender PNGs seem not best served by O*iPNG solely, if your given example file is in anyway representative. There's quite a lot of difference between >800 & ~250 MB. |
Update: started it an hour ago and at 9/16 OptiPNG seems to be the only thing thats benefited the png, will update more as it happens |
Yikes, the total time it took to process was around 21 hours. |
Optimizer base: 265mb
|
@BuyMyMojo If 1's able to plan ahead, FO works amazingly well in the background. Also, given sufficient system resources & until builtin parallelism is implemented, multiple FO instances (I routinely run 4 on my quad-core) will shorten overall times via splitting up file lists. |
That is also a great idea! |
For organization purposes, I'm going to close this as it is essentially a duplicate of #314. |
@BuyMyMojo sorry for continuing this closed thread after you found something that works but seeing as you were testing ZPAQ I figured I'd test more exotic compression too. |
I have taken a look at flif but it's more trying to shrink it enough for sharing with others, ZPAQ is defiantly odd but it's just there to send the file, keeping it PNG means it's usable in all software still |
@emphaticism The PNG eventually came down to 265 MB @ It would be amazing to see what lossless WebP/JXL could do, though. |
When using the windows version I get this error through powershell
and using it through the linux subsystem grants me this error
The text was updated successfully, but these errors were encountered: