Optimize images before uploading?

Was that given a go?

Another example of what is possible on ImageOptimization in browser:

https://squoosh.app/

This video goes over the tech. They compiled the state of art codecs (the same we use on the server for Discourse) to WASM :exploding_head:

Looks like a cool, optional thing for Discourse.

The WASM for mozjpeg can be compressed to 48k and the WASM for OptiPNG is 93k.

9 « J'aime »

My image folder grows to 42.3 GB.
So I think I need to figure out image processing and storing in Discourse :slight_smile:

1 « J'aime »

I’m not sure if this is the right topic to post on, but I am very interested in knowing if there’s a way to automatically downsize images before they get stored in my discourse. My community is going to be very image heavy.

I’m less than a week in and already 350 MB used and not even open to general public yet. Would like to be able to resize images down to some resolution so that I keep them < 1MB or something like that (based on image resolution though as per norm I think).

I’d recommend using Digital Ocean spaces or S3 for your images so you don’t need to worry about space so much.

It seems unlikely that a community that really likes images is going to want really bad ones. :slight_smile:

We already have max_image_megapixels site setting, can you try toning that down?

2 « J'aime »

@sam Yes, but, the problem is there’s a big difference between reducing some resolution that most people won’t even notice (IMO big diminishing returns), versus blocking them from uploading at all. On my main site, I downsize to 1500x and no one cares. But if they can’t upload it’s a huge hassle.

@pfaffman This sounds perfect, I guess I need to read:

I wonder, this is probably something I need to do sooner than later, because I’m guessing trying to migrate the files from discourse hosting to s3 could be hard?

1 « J'aime »

I do support a simpler mechanism longer term, something like

All images must be smaller than 500k but allow people to upload stuff up to 2000k and fix on server if needed by either downsizing or reducing resolution. Try resizing on client first if possible.

But yeah, getting to this level of fidelity will take quite a while.

2 « J'aime »

There is a rake task that will do it, but I’d say that sooner is better than later. :slight_smile:

1 « J'aime »

La plupart de nos utilisateurs utilisent des données mobiles et, parfois, leur vitesse Internet peut être de 3G ou moins. Souvent, la qualité des images qu’ils envoient n’est pas importante ; c’est la vitesse qui compte le plus pour eux.

Sur une connexion 3G (environ 2 Mo/s), l’envoi d’une image de 5 Mo prend environ 20 secondes, et ce temps peut être bien plus long si la vitesse diminue.

Comme le souligne @Falco, avec des algorithmes similaires, la taille d’une image de 5 Mo peut être réduite à 190 Ko en la compressant côté client et en réduisant ses dimensions. Cela permet à la fois un envoi plus rapide (en 3G, environ 1 seconde) et une consommation moindre de ressources.

La capture d’écran ci-dessus montre l’envoi de l’image dans le messager Telegram

Une telle fonctionnalité figure-t-elle sur la feuille de route ? Si oui, est-elle prévue à court ou à long terme ?

C’est quelque chose que nous souhaitons réaliser à terme, mais cela ne figure pas dans notre feuille de route publique à l’adresse #releases.

Je rédigerai une RFC sur cette fonctionnalité cette semaine afin que nous puissions avancer, au moins au niveau de la spécification.

7 « J'aime »

C’est déjà possible sur iOS. Comme ceci (je poste une capture d’écran, attendez un instant)

Via

J’ai sélectionné « grand ». Mais l’orientation est toujours foirée !

7 « J'aime »

Merci, c’est super :pray: :+1:

J’aimerais qu’Android apprenne aussi :sweat_smile:

En plus de cette fonctionnalité, la lightbox peut servir de bouton de rotation d’image

Cette bibliothèque semble intéressante : GitHub - silvia-odwyer/photon: ⚡ Rust/WebAssembly image processing library · GitHub

Un binaire wasm semble être le choix idéal car il sera rapide et économe en mémoire.

3 « J'aime »

Je me demande si la compression d’images côté client, lorsqu’elle est possible, aurait un impact notable sur les performances du serveur web dans le cas d’un hébergement à faibles spécifications (par exemple, une instance Digital Ocean partagée en termes de CPU).

J’observe occasionnellement des pics d’utilisation du CPU que je crois liés à des utilisateurs téléchargeant des images nécessitant une compression. Quelqu’un a-t-il constaté un impact similaire ?

2 « J'aime »

Discussion sur la mise en œuvre à l’adresse Optional image optimization before upload

1 « J'aime »