Comment Redimensionner une Image en Haute Résolution avec PHP
Je suis en traitement d'images lorsque l'utilisateur télécharge une photo, mais mon problème est de haute rez photos de. Comment avez-vous détecter lorsque l'utilisateur télécharge un? Je suis à l'aide de la librairie GD de PHP. Réglage de la qualité d'90 avec l'utilisation de la fonction imagejpeg() la méthode ne fait rien pour elle, mais les échelles de la dimension et définit ensuite le ppi 72. Je veux être en mesure de préserver la dimension et de la baisse de l'ipp à 72 en même temps. Tout conseil serait grandement apprécié.
OriginalL'auteur wavyGravy | 2011-01-21
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une telle chose comme PPI autant que vous devez être concernés. Aussi, le DPI n'existe pas dans le numérique. Il y a uniquement les pixels, et les dimensions (qui sont juste une mesure de pixels dans les deux sens).
Ce que vous êtes vraiment essayer de faire est de sous-échantillonner une image, en réduisant les dimensions d'une image. Vous aurez probablement envie de le faire proportionnellement, c'est à dire que vous voulez garder le même rapport largeur /hauteur, de telle sorte que l'image ne s'affiche pas étiré après rééchantillonnage. A noter également, le redimensionnement et le sous-échantillonnage diffèrent en ce que le redimensionnement ne paie pas beaucoup d'attention au contenu, donnant visuellement très pauvres images redimensionnées. Vous voulez probablement rééchantillonnage.
La documentation de PHP a quelques grands exemples sur la manipulation des fichiers téléchargés ainsi que comment redimensionner des images à l'aide de la GDImage de la bibliothèque. Je vous suggère de les vérifier. D'autres méthodes que vous pourriez voulez savoir à propos de:
Vous pourriez être intéressé par cette page de leur docs concernant la mise à l'échelle des images de grande taille: deepliquid.com/content/Jcrop_Sizing_Issues.html
Très intéressante. Je vais garder cela à l'esprit. Merci pour le trouver!
+1 pour expliquer la différence entre le redimensionnement et le sous-échantillonnage.
OriginalL'auteur coreyward
PPP, PPP...
Tout d'abord, permettez-nous de clarifier la terminologie. Les deux PPI (pixels par pouce) et DPI (dot per inch) sont des rapports qui spécifient la conversion de pixels en unités physiques (pouces dans ce cas). Dans le monde numérique, des ordinateurs, des images, ... DPI est utilisé à tort où IPP doit être utilisé à la place. DPI, en fait, n'existent que dans un monde de l'impression. Mais pour nous, maintenant, DPI = PPI. >> Plus d'info
La résolution de l'information (parfois appelé PPP, mais il est PPI) est stocké dans l'en-tête (image méta-informations). JPG et PNG ceci; mais GIF ne prend pas en charge DPI - il n'est pas présent dans la GIF-tête.
Changement PPI en PHP
Alors, vous vous demandez probablement comment mettre en PPP (DPI) dans l'image d'en-tête? En PHP, vous pouvez le faire en utilisant Imagick bibliothèque (bien sûr pas pour les GIFs):
Si vous téléchargez ces images et d'essayer de les imprimer par exemple, dans IrfanView, il va utiliser le dpi de l'information pour convertir les pixels de la cible unité physique. Les deux images seront imprimées en différentes tailles.
Image PPI ne fonctionne pas sur le web
Mauvaise nouvelle est que cela ne changera pas rien lors de l'affichage de l'image sur une page web. Le unité d'ancrage pour l'affichage est toujours un pixel dans le CSS. Donc
img.jpg
et laimg-500dpi.jpg
aura exactement la même taille dans le navigateur. Même si vous ouvrez les images directement. Même si vous utilisez l'unité physique commecm
:les deux images sont affichées dans la même taille; unités physiques sont convertis en pixels indépendamment de la résolution de l'image à l'aide de rapport fixe. Et étonnamment, même si vous essayez de impression les images brutes (pas de la page) dans Firefox, ils ont tous deux seront imprimés à la même taille. Ne peut pas commenter sur d'autres navigateurs. Assez étrange - cela fonctionne comme prévu dans Irfanview.
PPI et d'images de la rétine
Maintenant avec les Iphones etc. de la rétine (c'est à dire à haute résolution), les images sont en train de devenir à la mode. Ici, un lot est parlé DPI (PPP, en fait), mais ce n'est liée qu'à l'appareil cible et le CSS media queries.
Il n'y a rien qui fait reconnaître l'IPP de votre image, vous devez spécifier les dimensions réelles de la haute résolution de la rétine de l'image en pixels. C'est un exemple pour 66x66 icône (à partir d'ici):
De sorte que vous pouvez réellement "à la baisse" les images de haute résolution par réglage de dimensions inférieures pour eux dans le CSS. Mais je ne le recommande pour ce faire, pour les images de la rétine et dans un délai correct media query.
Donc, vous avez à rééchantillonner en PHP
Donc en fait, si vous voulez faire de l'image téléchargée apparaissent plus petits "sur le Web", le meilleur moyen est de ré-échantillonner. Le rééchantillonnage des moyens de ne pas modifier l'en-tête uniquement, mais de modifier les pixels de la matrice de l'image. Voici le code que j'utilise en PHP, qui utilise la librairie GD:
Être conscients que cela nécessite beaucoup de mémoire, qui peut être limitée par votre fournisseur d'hébergement.
OriginalL'auteur TMS
Si vous êtes en relation avec salut-res images beaucoup, j'irais vers le bas le chemin d'accès à ImageMagick comme il est fastert + donne beaucoup plus d'informations sur les images + vous permet d'écrire des images à 300 DPI (ou d'autres résolutions) si vous le souhaitez.
Voici ce que je fais avec Jcrop et ImageMagick (mais à 72 DPI)
OriginalL'auteur niggles
À l'aide de phpthumb (http://phpthumb.gxdlabs.com) est un bon, élégant et facile solution.
Je avoir un exemple de code utilisant téléchargés sur GitHub. Il peut utiliser les deux GD & Imagemagick, il est à vous.
https://github.com/lopezator/thumbNailGenerator
OriginalL'auteur sh4
bool Imagick::setResolution ( float $x_resolution , float $y_resolution )
OriginalL'auteur user3865787
Si vous êtes à la réduction de la ppi, les dimensions changent pour refléter la réduction de nombre de pixels par pouce, il y aura nécessairement moins de pouces à votre image.
Est-ce vraiment vrai? Dans la mesure où j'ai lu que le ppi et les ppp sont pour l'impression et inutile sur Pc
lors de l'affichage d'une image ppp/dpi indiquer la qualité de l'image, lorsqu'on les regarde à "100%" de la taille de votre écran.
OriginalL'auteur blueberryfields