3

Je voudrais redimensionner certaines images de la même manière que Facebook. ImageMagick, mais bon, je suis ouvert aux suggestions :)Redimensionnement d'images à l'image de Facebook en utilisant ImageMagick

Je crois Facebook est en train de faire ceci:

Supposons que vous avez une largeur max x hauteur de 250x200, Facebook optimise l'utilisation de ce. Essaie d'utiliser autant de 250x200 que possible. Si par exemple vous réduisez une image et obtenez 220x200, alors ils coupent du haut et du bas de l'image jusqu'à ce qu'ils utilisent autant que possible de l'image 250x200. En fait, je pense qu'ils prennent plus de bas que de haut (autour de 1: 2,5), ce que je crois parce que la plupart des photos ont la tête en haut et Facebook réalise cela.

Y a-t-il un nom pour ce type d'algorithme de redimensionnement? Et y a-t-il un moyen de faire faire ça à ImageMagick?

Merci d'avance!

Modifier Il semble en fait que Facebook ne fasse peut-être pas cette technique de redimensionnement "intelligente" après tout. Ils redimensionnent juste là où ils ont un minwidth/minheight. Puis quand ils montrent l'image dans leur album, ils coupent du haut/bas ou gauche/droite pour utiliser autant que possible pour le cadre (c'est ainsi que je le perçois au moins).

-Tobias

+0

quelle langue utilisez-vous? il y a beaucoup de bibliothèques utiles pour ce genre de chose, selon. – fish2000

+0

Serverside javascript. Mais il semble que ImageMagick est un bon moyen de faire. – freeall

+0

Facebook vous avez choisi où votre visage est, puis il fait simplement un redimensionnement simple. – erjiang

Répondre

1

Vous pouvez utiliser ImageMagick pour obtenir les dimensions d'une image, à l'échelle puis recadrer. Quant à savoir si vous décrivez précisément l'algorithme utilisé par Facebook, je ne sais pas.

Je pense que le lien suivant aborde le problème que vous essayez d'aborder:

http://www.imagemagick.org/Usage/resize/#space_fill

L'exemple qu'ils donnent à la fin est ...

convert logo: \ 
     -resize 160x -resize 'x160<' -resize 50% \ 
     -gravity center -crop 80x80+0+0 +repage space_fill_2.jpg 

Cette commande redimensionne une image de 160 pixels de large, la redimensionne pour qu'elle fasse 160 pixels de haut, prend la plus grande des deux images redimensionnées et la réduit de moitié, puis la recadre en 80x80.

Ce qui suit peut être vous intéresser:

http://www.google.com/search?q=image+entroy+cropping

J'ai lu plusieurs documents sur l'utilisation de l'entropie de l'image pour choisir quelle partie de l'image à recadrer.

Un autre lien connexe -

Django, sorl-thumbnail crop picture head

modifications: ajout de liens connexes, a précisé un exemple de commande pour faire une tâche similaire avec lien vers la source de l'exemple.

+0

Je cherchais surtout une seule commande pour le faire, donc je pouvais le faire à la volée en utilisant seulement des flux. Pour redimensionner ImageMagick, mais remplissez autant que possible de la boîte englobante que je lui donne. – freeall

+0

Je ne connais pas une telle commande, et je ne sais pas pourquoi ils incluraient une telle commande. ImageMagick est supposé faire un traitement d'image générique. Son but n'est pas d'implémenter toutes les manipulations d'images possibles. Peut-être que vous pourriez utiliser la bibliothèque ImageMagic ou une autre bibliothèque de manipulation d'image pour faire un outil pour faire cette chose spécifique. – EMPraptor

Questions connexes