Redimensionner une image en PHP
Je suis désireux d'écrire un peu de code PHP qui redimensionne automatiquement toutes les images téléchargées via un formulaire à 147x147px, mais je n'ai aucune idée de comment faire (je suis un parent PHP débutant).
Jusqu'à présent, j'ai des images de téléchargement avec succès, les types de fichiers reconnus et les noms nettoyé, mais je tiens à ajouter que le redimensionnement de la fonctionnalité dans le code. Par exemple, j'ai une image de test, qui est de 2,3 MO, et 1331x1331 en dimension, et je voudrais le code de la taille vers le bas, qui je suppose va considérablement compresser la taille du fichier de l'image, trop.
Jusqu'à présent, j'ai les suivantes:
if ($_FILES) {
//Put file properties into variables
$file_name = $_FILES['profile-image']['name'];
$file_size = $_FILES['profile-image']['size'];
$file_tmp_name = $_FILES['profile-image']['tmp_name'];
//Determine filetype
switch ($_FILES['profile-image']['type']) {
case 'image/jpeg': $ext = "jpg"; break;
case 'image/png': $ext = "png"; break;
default: $ext = ''; break;
}
if ($ext) {
//Check filesize
if ($file_size < 500000) {
//Process file - clean up filename and move to safe location
$n = "$file_name";
$n = ereg_replace("[^A-Za-z0-9.]", "", $n);
$n = strtolower($n);
$n = "avatars/$n";
move_uploaded_file($file_tmp_name, $n);
} else {
$bad_message = "Please ensure your chosen file is less than 5MB.";
}
} else {
$bad_message = "Please ensure your image is of filetype .jpg or.png.";
}
}
$query = "INSERT INTO users (image) VALUES ('$n')";
mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query);
- Avez-vous essayé les échantillons aime ces stackoverflow.com/questions/10029838/image-resize-with-php ?
- sans changer la
upload_max_filesize
dansphp.ini
,tout d'abord est-il possible de charger le fichier de la taille de plus deupload_max_filesize
?. Est-il possible de redimensionner l'image de la taille de plus deupload_max_filesize
? sans changerupload_max_filesize
dansphp.ini
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour utiliser PHP ImageMagick ou GD fonctions pour travailler avec des images.
Avec GD, par exemple, c'est aussi simple que...
Et vous pouvez appeler cette fonction, comme si...
À partir de l'expérience personnelle, GD image du rééchantillonnage n'réduire considérablement la taille du fichier, surtout lors du rééchantillonnage premières images d'appareils photo numériques.
BLOB
s? Je recommande de stocker des images dans le système de fichiers et les insérer des références dans votre base de données. Je recommande également la lecture de la pleine GD ou ImageMagick) documentation pour voir ce que les autres options disponibles.abs()
, commeceil($width-($width*abs($r-$w/$h)))
et même à la hauteur de la partie. Il est nécessaire dans certains cas.http://wallpapercave.com/wp/wc1701171.jpg
à 400x128 (bannière) crée une image en noir; je ne peux pas comprendre pourquoi il le fait bien.Cette ressource est également utile d'envisager certains très propre code qui utilise GD. Cependant, j'ai modifié leur dernier extrait de code pour créer une fonction qui répond à la Fpo exigences...
Vous devrez également inclure ce fichier PHP...
Si vous n'avez pas de soins sur le ratio d'aspect (j'.e vous voulez forcer l'image à une dimension particulière), ici, c'est plus simple de répondre à
Maintenant, nous allons gérer l'upload de la partie.
Première étape, télécharger le fichier de votre répertoire souhaité. Ensuite appelé l'une des fonctions ci-dessus selon le type de fichier (jpg, png ou gif) et passer le chemin absolu de votre fichier téléchargé comme ci-dessous:
La valeur de retour
$img
est un objet de la ressource. Nous pouvons sauvegarder vers un nouvel emplacement ou de remplacer l'original comme ci-dessous:Espère que cela aide quelqu'un. Consultez ces liens pour plus d'informations sur le redimensionnement Imagick::resizeImage et
imagejpeg()
upload_max_filesize
dansphp.ini
,tout d'abord, vous ne pouvez pas télécharger le fichier de la taille de plus deupload_max_filesize
. Est-il possible de redimensionner l'image de la taille de plus deupload_max_filesize
sans changerupload_max_filesize
dansphp.ini
J'espère, c'est pour vous.
Tout simplement utiliser la fonction php: étant donné que
(IMPORTANT: Dans le cas de l'animation (animation webp ou gif), le redimensionnement, le résultat sera un pas d'animation, mais l'image redimensionnée à partir de la première image! (L'animation d'origine reste intact...)
J'ai créé à mon php 7.2 projet (exemple imagebmp sûr (PHP 7 >= 7.2.0) :php/manuel/fonction.imagebmp) sur techfry.com/php-tutorial, avec GD2, (donc rien 3ème partie de la bibliothèque) et très similaire à la réponse de Nico Gipsoteca, mais travaille avec l'ensemble des cinq de base de l'image de type mime (png, jpeg, webp, bmp et gif), la création d'un nouveau fichier redimensionné, sans modifier l'original, et tous les trucs dans une fonction et prêt à l'emploi (copier et coller à votre projet). (Vous pouvez définir l'extension du nouveau fichier avec le cinquième paramètre, ou tout simplement laisser, si vous voulez garder l'original):
ZF gâteau:
Vous pouvez donner un essai à TinyPNG bibliothèque PHP. L'utilisation de cette bibliothèque de votre image est optimisée automatiquement pendant le processus de redimensionnement. Tout ce que vous devez installer la bibliothèque et obtenir une clé API de https://tinypng.com/developers. Pour installer une bibliothèque, exécutez la commande ci-dessous.
Après cela, votre code est comme suit.
J'ai écrit un blog sur le même sujet http://artisansweb.net/resize-image-php-using-tinypng
J'ai créé un outil facile à utiliser la bibliothèque pour le redimensionnement d'image. Il peut être trouvé ici sur Github.
Un exemple d'utilisation de la bibliothèque:
D'autres caractéristiques, si vous en avez besoin, sont:
Je vous recommande d'utiliser piio.co, une fois que vous avez téléchargé vos images vers votre espace de stockage, il vous suffit d'utiliser l'image d'origine url dans votre
<img />
tag et de la bibliothèque va automatiquement faire le redimensionnement pour vous.Votre balise d'image devrait ressembler à ceci:
<img data-piio="/image/gallery/p/image1.jpg" />
Puis une fois que vous initialiser Piio du script, il sera automatiquement redimensionner l'image et de l'utiliser à partir d'un CDN.
Voici un lien vers le docs
Si vous voulez le faire manuellement, alors je vous recommande d'utiliser les fonctions php natives, ce sera l'utilisation de la librairie GD.
Par exemple, si vous souhaitez redimensionner une image JPEG vous pouvez commencer avec:
Directement sortie de l'image:
imagejpeg($thumb);
Pour enregistrer l'image dans un fichier:
imagejpeg($thumb, 'filepath/image.jpg');
upload_max_filesize
dansphp.ini
,tout d'abord, vous ne pouvez pas télécharger le fichier de la taille de plus deupload_max_filesize
. Est-il possible de redimensionner l'image de la taille de plus deupload_max_filesize
sans changerupload_max_filesize
dansphp.ini
J'ai trouvé une méthode mathématique pour faire ce travail
Dépôt Github - https://github.com/gayanSandamal/easy-php-image-resizer
Exemple vivant - https://plugins.nayague.com/easy-php-image-resizer/