Recadrer/redimensionner/pad d'une image à une taille fixe
J'ai besoin de redimensionner une image à une taille fixe. Mais il doit tenir les facteurs entre la largeur et la hauteur.
Dire que je veux redimensionner une image à partir d' 238 (w) X 182 (h)
à 210 /150
Ce que je fais maintenant est:
Original width / target width = 1.333333
Original Height / target Height = 1.213333
Maintenant, je prends le plus petit facteur.
Maintenant, j'ai toujours le droit largeur depuis 238 /1.333333 = 210
.
Mais la hauteur est toujours 160
.
Comment puis-je obtenir la taille vers le bas pour 160
sans ruiner le pic?
Ai-je besoin de récolte? Si oui, comment?
OriginalL'auteur sanders | 2009-04-14
Vous devez vous connecter pour publier un commentaire.
Cette solution est essentiellement la même que Peut Berk Güder, mais après avoir passé du temps à écrire et de commenter, je me sentais comme l'affichage d'.
Cette fonction crée une vignette qui est exactement aussi grand que la taille de la donner.
L'image est redimensionnée pour s'adapter à la taille de la vignette. Si elle ne rentre pas exactement dans les deux directions, il est centré dans le thumnail. De nombreux commentaires d'expliquer les allées et venues.
Exemple d'utilisation:
Ce script crée une copie de l'image originale. Lors du rééchantillonnage d'une image, vous devez faire une copie. Mon exemple utiliser détruit l'image d'origine (imagedestroy($i)). Si vous souhaitez écraser le fichier d'image, alors il suffit d'écrire $pouce vers le fichier "img.jpg" dans l'exemple.
Ok merci. Que faire si je veux avoir la totalité du pic redimensionnée et ne pas faire juste un crop?
Ce n'est pas une culture. Le recadrage est la suppression d'une partie de l'image. Cette fonction utilise toujours l'ensemble de l'image.
C'est soit un manque un } après si($new === false) { //création a échoué, probablement pas assez de mémoire return null; ou vous devez supprimer l' {
OriginalL'auteur gnud
Ce n'est pas recadrer la photo, mais laisse de l'espace autour de la nouvelle image si nécessaire, je pense que c'est une meilleure approche (de culture) lors de la création de vignettes.
yep, ça fonctionne pour moi.
la hauteur est de 150 et la largeur est de 196. il y a donc une 7px marge à gauche et à droite.
hauteur de 196? Il devrait être de 150!
vous s'il vous plaît lire mon commentaire à nouveau?
OriginalL'auteur Can Berk Güder
Avez-vous des Imagick? Si oui, vous pouvez charger l'image avec elle et faire quelque chose comme
en guise de paramètre()
Là, vous pouvez sauter l'un des paramètres (hauteur ou largeur) et il va redimensionner correctement.
Voici un exemple avec imagick php: arturito.net/2011/01/08/...
OriginalL'auteur Ólafur Waage
Peut-être jeter un regard à PHPThumb (il fonctionne avec GD et ImageMagick)
OriginalL'auteur TheHippo
Juste une pointe de haute qualité rapide de la génération de vignettes à partir d'images de grande taille: (à partir de la php.net site)
Si vous faites de la génération de vignettes dans deux étapes:
alors cela peut être beaucoup plus rapide; la redimensionner à l'étape 1 est d'assez mauvaise qualité pour sa taille, mais a assez de résolution supplémentaire que dans l'étape 2 la qualité est décent, et l'image intermédiaire est suffisamment petite pour que la haute qualité de rééchantillonnage (qui fonctionne très bien sur un 2:1 redimensionner) du produit très rapide.
voir le php lien dans mon post
OriginalL'auteur Jason S
Je préfère redimensionner, de sorte que l'image est contenue au sein de votre limite et ensuite remplir le vide des pièces. Ainsi, dans l'exemple ci-dessus vous redimensionner, de sorte que la hauteur est OK, alors remplir (7 pixels sur chaque fin je pense) à gauche et à droite avec une couleur d'arrière-plan.
OriginalL'auteur Ickmund
Le redimensionnement des images à partir d'un PHP-source de la page web peut être problématique. Des images plus grandes (approche 2+MO sur le disque) peut être si grand qu'ils ont besoin de plus de 32 mo de mémoire pour le processus.
Pour cette raison, j'ai tendance à le faire soit à partir d'une interface de ligne de commande en fonction de script, avec jusqu'à 128 MO de mémoire disponible, ou à une norme de ligne de commande qui utilise aussi comme beaucoup comme il se doit.
"convertir" fait partie de la ImageMagick outils de ligne de commande.
OriginalL'auteur Alister Bulman
sont ces miniatures? si elles le sont, le recadrage n'est pas un énorme problème. nous le faisons tout le temps. je n'ai même pas timide loin de recadrage de l'arbitraire des ratios en paralysé quadratique vignettes, complètement gâcher l'image (oui, je suis que le hardcore), si elle semble bonne. c'est un des concepteurs de répondre à une question technique, mais tout de même. n'a pas peur de la des cultures!
OriginalL'auteur stefs
Je pense qu'il y a un peu de confusion..
Si vous ne souhaitez redimensionner, en gardant le rapport original, la bonne opération est:
D'autre, si le préfixe newWidth et newHeight ne peut pas être changé, et le pouce ratio est différent du rapport original, le seul moyen est de recadrer ou d'ajouter des bordures pour le pouce.
Si votre e à la manière coupé, cette fonction peut vous aider (je l'ai écrit il y a des années dans les 5 minutes, peut-être besoin de quelques améliorations.. il fonctionne uniquement avec les jpg, par exemple);:
OriginalL'auteur Strae
La technique consiste à:
Enfin, si vous êtes perplexe sur la façon de faire de redimensionner les mathématiques, n'oubliez pas que si les proportions des images source et de destination sont les mêmes, cette relation est titulaire:
Si vous connaissez trois paramètres, vous pouvez calculer le quatrième facilement.
J'ai écrit un article à ce sujet:
Culture-Pour-Ajustement d'une Image à l'Aide d'ASP/PHP
OriginalL'auteur Salman A
Vous aurez à rogner 5 px du haut et du bas pour accéder à votre taille de la cible, cependant, cela pourrait ruiner l'image.
Vraiment, vous devriez avoir un objectif, la largeur ou la hauteur, puis ajuster à l'autre dimension, dans la même proportion.
Particuliers des tailles de l'image n'est pas une bonne idée lorsque vous n'avez pas le contrôle complet sur la source des images. Vous ne pouvez mettre à l'échelle pour s'adapter.
OriginalL'auteur cjk