Le redimensionnement de l'image en php pour l'affichage uniquement
D'accord, la raison pour laquelle j'ai posté c'est parce que je n'étais pas sûr de ce que pour la recherche. Je vais essayer de l'expliquer aussi clairement que je le peux.
Dire, j'ai une image de taille 800x600. La boîte que j'ai alloué pour l'image est 150x150 et doit être satisfaite à tout moment. Je ne peut permettre à une image à une taille maximale de 150px de hauteur et de largeur. Donc, techniquement, l'image doit être réduit à 200x150.
Maintenant, la question:
Est-il une manière que je peux recadrer la hauteur de sorte qu'il ne montre 150x150? C'est pour fins de consultation seulement. Je n'ai pas besoin d'enregistrer l'image en tant que nouveau fichier.
Un bon exemple est la page de votre profil Twitter. Il montre votre profil d'image recadrée, mais lorsque vous cliquez sur, vous obtenez toujours l'image d'origine que vous avez téléchargé.
[MODIFIER]
Voici ce que je suis en train de réaliser. Obtenir le plus petit côté en termes de pixels, le redimensionner à 150px puis masquer le débordement de la partie de l'autre côté. Encore une fois, pas de sauvegarde en cause. Juste pour le plaisir de visionnage.
Essayez d'éviter les sur-la-mouche de traitement de l'image, il va créer beaucoup de charge sur vos serveurs. Nous utilisons .htaccess règles de réécriture afin que nous puissions enregistrer le fichier sur le disque et de le servir directement après l'affichage initial. Si j'avais le temps, maintenant, je voudrais vous poster une réponse sur la façon dont nous le faisons.
TimThumb a été désapprouvée. L'auteur a écrit ce post en expliquant pourquoi il ne devrait plus être utilisé: binarymoon.co.royaume-uni/2014/09/timthumb la fin de vie
OriginalL'auteur Mike Sanchez | 2012-03-06
Vous devez vous connecter pour publier un commentaire.
J'utilise une simple classe PHP qui dispose de plusieurs options de redimensionnement. Vous pouvez facilement stocker les vignettes via cette classe. @Jeroen a dit, vous n'avez qu'à le faire une fois et ils peuvent être mis en cache. Il faut juste PHP5 et de la bibliothèque GD. Voici exemple d'utilisation:
Et c'est la classe:
Lors de l'utilisation de $resizeObj -> resizeImage(150, 150, 'culture'); Est le 150 les dimensions de l'image en pixels?
OriginalL'auteur Valeh Hajiyev
Vous de charger une image, redimensionnement d'abord afin qu'il ait le minimum étant de 150, puis de recadrer les 150 largeur/hauteur par rapport au centre. Ensuite, vous avez juste à la sortie de votre image:
Vous trouver le code source, la documentation, la démonstration en ligne et la documentation de l'API ici: WideImage.
Laissez-moi savoir si vous avez encore des questions.
OriginalL'auteur hakre
Il est très facile à utiliser
ici, c'est la classe http://timthumb.googlecode.com/svn/trunk/timthumb.php
voici les params http://viralpatel.net/blogs/resize-image-dynamically-php/
J'ai testé regarde fonctionne très bien
exemple est
< img src="/scripts/timthumb.le php?src=/chemin/chemin/myimage.png&w=100&h=80"
alt="image" />
Timbthumb est vulnérable aux attaques.
Il existe de multiples façons à éviter les attaques.L'idée n'est pas de résoudre les problèmes de sécurité!
OriginalL'auteur user1524615
Pourquoi ne pas simplement le faire avec CSS et ne pas avoir à utiliser le serveur pour n'importe quel traitement? Il ya un couple de façons de le faire à l'aide de CSS. Le Clip de la méthode est celui que j'ai utilisé avant, et une recherche sur google vous apportera plusieurs résultats. Ici est un site qui couvre ce bien
OriginalL'auteur LJ Wilson
Je voudrais stocker les vignettes de sorte que vous n'avez qu'à le faire une fois et ils peuvent être mis en cache. Si le rapport d'aspect est fixe, je ferais une mise à l'échelle vers le bas pour s'adapter dans un 200x200 boîte (il y a quelques php ici les réponses à ce sujet donc je vais l'ignorer). Si le ratio d'aspect varie, je voudrais utiliser une valeur sûre, de sorte qu'il couvre toujours votre 150x150 boîte (comme 300x300).
Ensuite, je mettrais la vignette de l'image comme image de fond de la zone d'image dans le css et vous obtenir exactement l'effet que vous voulez:
Pour améliorer l'expérience pour css3 capable navigateurs, vous pouvez définir:
de la boîte de sorte qu'il s'adapte exactement (en conservant les proportions).
OriginalL'auteur jeroen
Enregistrer le fichier en tant que imageresize.php et de placer ce fichier dans votre dossier d'images et il suffit d'utiliser le code comme ceci pour afficher une image
vous pouvez utiliser ce code pour afficher les images dans différentes tailles.
OriginalL'auteur Juice
Voici mon Image Redimensionner Classe. La Classe peut obtenir le Résultat que vous souhaitez (recadrage/centré recadrage/etc.)... et beaucoup plus 😉
Je n'ai pas tout expliquer mais si vous avez des questions il suffit de me le demander.
OriginalL'auteur riyuk
Je ne sais pas ce entièrement, mais une fois que j'ai créé un programme qui permettrait de consulter les vignettes des images pour nos images. Et le code qui va comme ceci:
changeant les paramètres de imagecopyresized qui sont mis à 0,0,0,0 ici recadrer votre image de x1,y1 et x2,y2 Espère que cette aide
OriginalL'auteur Nishchal Gautam
J'ai un script shell en place qui fait exactement ce dont vous avez besoin avec ImageMagick:
^
après150x150
est essentiel!-thumbnail
option de bandes de toutes les méta-informations, sauf pour les profils de couleurs et est très rapide.-gravity center -extent 150x150
) - exactement ce que vous voulez.-quality 85%
qui devrait être beaucoup tout en réduisant la taille du fichier beaucoup.img
répertoire et écrire la vignette avec le même nom de fichier à unimg150
répertoire juste à côté d'elle.Expérience pour de meilleurs résultats.
J'ai eu de l'aide de:
http://www.imagemagick.org/Usage/files/
http://www.imagemagick.org/Usage/resize/
http://www.imagemagick.org/script/command-line-options.php#thumbnail
OriginalL'auteur Erwin Brandstetter
Comme quelques-uns ont mentionné, cela peut être fait avec CSS si vous n'êtes pas à l'enregistrement de l'image. Bien que les temps de chargement sera blessé (le téléchargement d'une image en 800x600 vs le téléchargement d'un 150x150 image).
HTML:
CSS:
OriginalL'auteur DACrosby
vous pouvez le faire avec jquery. je suppose que vous avez un nom de classe pour les images que vous souhaitez afficher recadrée. par exemple il pourrait être ".cropmyimage", voici le code:
OriginalL'auteur Taha Paksu
Regarder dans WideImage, un open-source PHP de la bibliothèque pour la manipulation d'images. Pourrait obtenir un simple que
http://wideimage.sourceforge.net/
OriginalL'auteur bas
C'est exactement vous êtes à la recherche pour, et une étape plus loin, la mise en cache pouces:
Vérifier http://phpthumb.gxdlabs.com/
Vous pouvez utiliser ce script en tant que script.le php?img=image.jpg&size=100, dans ce cas, ils sont sur le même répertoire que le script.
OriginalL'auteur Guilherme Viebig
Je pense que une solution simple, sans stress et processin travail serait avec css:
1) Appliquer une classe qui va vous donner une image recadrée. Le faire avec l'aide de la marge négative.
Je n'ai pas utilisé exactement de la marge de l'utiliser comme vous le désirez.
2) Sur le vol stationnaire remplacer le marging attribut, de sorte qu'il va vous donner la véritable image.
html:
OriginalL'auteur Angelin Nadar
suffit d'utiliser
<img src='source' width="150" height="150" />
il va redimensionner l'image.
mais cela n'aura pas préférable, car elle cause fardeau sur navigateur.
yup.Comme je l'ai dit ses pas préférable.
OriginalL'auteur sandeep