J'ai une image avec une résolution de 18984x28591px mais je ne peux pas l'ouvrir avec Paint ou avec Pixlr Editor pour réduire sa taille.
Comment puis-je convertir ou ouvrir cette grande image sur mon ordinateur portable?
J'ai une image avec une résolution de 18984x28591px mais je ne peux pas l'ouvrir avec Paint ou avec Pixlr Editor pour réduire sa taille.
Comment puis-je convertir ou ouvrir cette grande image sur mon ordinateur portable?
Réponses:
J'ai utilisé ImageMagick sur Ubuntu pour redimensionner ces grandes images.
convert -resize 10% source.jpg dest.jpg
Cela a pris un certain temps, mais a fonctionné avec 1 Go de RAM, l'outil a créé un fichier d'échange de 4,7 Go pour lui-même.
Plus d'informations sont sur AskUbuntu .
convert -resize 1898x2859 ...
Théoriquement, la plupart des formats d'image pourraient être progressivement réduits, sans charger l'intégralité de l'image en mémoire, mais je ne connais aucun outil qui implémente vraiment une telle fonctionnalité, à l'exception de JPEG: il est spécial en ce sens que vous pouvez non seulement réduire l'échelle sans charger la pleine résolution, mais aussi à l'échelle inférieure sans décoder la pleine résolution, grâce à l'utilisation créative de DCT (le JPEG est encodé dans le domaine fréquentiel, ce qui signifie qu'il n'a pas besoin d'être décodé à la même résolution exacte que l'image d'origine).
L' outil de décodage JPEG par défaut (ligne de commande, paquet libjpeg-progs sous Linux, recherchez djpeg.exe pour Windows) réduira l'échelle énorme du JPEG avant qu'une application "régulière" puisse même terminer de le charger:
djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm
J'ai également vu l'option downscale-while-loading dans certaines applications GUI, mais je ne m'en souviens pas pour le moment.
Comparaison de l'utilisation de la mémoire et du temps de traitement d' ImageMagick par rapport à la réduction d' échelle djpeg d' une grande image (canalisation en cjpeg , donc l'image résultante est également en jpg, pour une comparaison équitable avec convert )
$ display -verbose input.jpg
input.jpg JPEG 13114x11722 13114x11722+0+0 8-bit sRGB 30.75MB 6.690u 0:06.699
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "convert input.jpg -scale '12.5%' output.jpg"
time=0:10.72 mem=1225844K
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "djpeg -scale 1/8 input.jpg | cjpeg > output2.jpg"
time=0:00.88 mem=1412K
1,2 Go contre 1,4 Mo et plus de 10 fois plus lent - et c'était sur une image relativement petite de 13k x 11k qui pouvait parfaitement tenir dans la RAM, donc aucun échange ne se produisait.
D'un autre côté, l'utilisation de djpeg pour la réduction d'échelle a également ses propres limites: le choix du facteur d'échelle est limité et la méthode de rééchantillonnage ne peut pas être modifiée.
Vous pouvez également essayer d'utiliser Picture Resizer sur Windows (j'adore cet outil)
Il vous suffit de glisser-déposer l'image sur ce simple EXE. Cela est particulièrement utile si vous avez de nombreuses images à convertir comme vous pouvez en faire plusieurs à la fois.
Toute la config se fait grâce au nommage de l'EXE qui est génial IMO
Je ne l'ai cependant jamais essayé avec un énorme fichier.