Compresser un image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compresser un image

Re: Compresser un image

par @rthur » 08 juil. 2021, 10:15

JSON.parse: unexpected character
Fais un var_fump() du JSON que tu essayes de traiter pour voir ce que tu récupères car à priori il est incorrect

Re: Compresser un image

par azizss » 08 juil. 2021, 09:22

bonjour tous le monde,

j'ai fait cela, mais sa marche pas, je ne trouve pas de solution.

Code : Tout sélectionner

<?php include_once '../config/config.php'; if (!empty($_FILES['file'])) { $target ="images/".basename($_FILES['file']['name']); echo "<br>"; $uploads_dir = 'images/'; echo "<br>"; $image = basename($_FILES['file']['name']); echo "<br>"; $qualiter = 60; $ip = $_SERVER['REMOTE_ADDR']; $datecrea = date("y-m-d"); $timevrea = date("H:i:s"); $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)."<br>"; if ($extension == 'jpg'){ imagejpeg($images, $target, $qualiter); $imagecom = compressImage($_FILES['file']['tmp_name'],$target,$qualiter); move_uploaded_file($_FILES['file']['tmp_name'], $imagecom); echo json_encode(['uploaded' => $target]); }elseif ($extension == 'gif'){ imagecreatefromgif($image); compressImage($_FILES['file']['tmp_name'],$target,$qualiter); echo json_encode(['uploaded' => $target]); }elseif ($extension == 'png'){ imagecreatefrompng($image); compressImage($_FILES['file']['tmp_name'],$target,$qualiter); echo json_encode(['uploaded' => $target]); } } ?>
Pour l'instant j’essaie de uploader un jpg mais rien sur mon serveur.
j'ai cette erreur :

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Merci de vos aide,

Re: Compresser un image

par azizss » 07 juil. 2021, 15:32

Merci pour vos aides,

j'ai fait cela, mais ça ne s'enregistre pas j'ai une un code qui apparais incompréhensible (je pense que ces des ligne de texte de mon image).

Code : Tout sélectionner

<?php include_once '../config/config.php'; if (!empty($_FILES['file'])) { $target ="images/".basename($_FILES['file']['name']); $uploads_dir = 'images/'; $image = basename($_FILES['file']['name']); $ip = $_SERVER['REMOTE_ADDR']; $datecrea = date("y-m-d"); $timevrea = date("H:i:s"); json_encode(['uploaded' => $target]); $valid_ext = array('png','gif','jpg'); $file_extension = pathinfo($target, PATHINFO_EXTENSION); $file_extension = strtolower($file_extension); if(in_array($file_extension,$valid_ext)){ compressImage($_FILES['file']['tmp_name'],$location,60); //json_encode(['uploaded' => $target]); }else{ json_encode(['error'=>'No files found for upload.']); } } function compressImage($source, $destination, $quality) { $info = getimagesize($source); if ($info['mime'] == 'image/jpeg') $images = imagecreatefromjpeg($source); elseif ($info['mime'] == 'image/gif') $images = imagecreatefromgif($source); elseif ($info['mime'] == 'image/png') $images = imagecreatefrompng($source); imagejpeg($images, $destination, $quality); } ?>
Pouvez-vous aider merci a vous,

Re: Compresser un image

par Ryle » 07 juil. 2021, 09:59

Salutations !

Ton code permet effectivement d'uploader une image sur le serveur et c'est la première étape indispensable :)

Une fois que tu as l'image sur le serveur, il faut généralement déterminer de quel type d'image il s'agit (JPG, PNG, GIF, etc.). Pour savoir quel est le type de l'image tu peux te servir de l'extension du fichier, mais ce n'est pas ce qu'il y a de plus fiable (je peux tout à fait nommer .png une image jpeg). Le mieux à mon sens est d'utiliser getimagesize() qui te retourne non seulement les dimensions de l'image, mais également le type "mime" du fichier : 'image/jpeg', 'image/png', 'image/gif' ...

En fonction du type mime du fichier, tu peux alors faire appel à la fonction imagecreate correspondante : imagecreatefromjpeg(), imagecreatefrompng(), imagecreatefromgif() etc. pour ouvrir l'image avec php.

Enfin, tu pourras enregistrer cette image sur le serveur, là encore avec la fonction adéquate imagejpeg(), imagepng()... en indiquant le niveau de compression souhaité via le troisième paramètre. Attention, chaque fonction ne gère pas la compression de la même façon : pour imagepng(), la qualité va e 0 (pas de compression) à 9, tandis que pour imagejpeg(), celle-ci va de 0 (pire qualité, petit fichier) à 100 (meilleure qualité, gros fichier).

Re: Compresser un image

par Shadowwera » 07 juil. 2021, 09:46

Compresser un image

par azizss » 06 juil. 2021, 22:19

bonjour tous le monde,

Je cherche a compresser des images que j'upload sur mon serveur

j'arrive a les uploads mais je n'arrive pas a les compresser.

mon code :

Code : Tout sélectionner

<!DOCTYPE html> <html lang="en"> <head> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.4.7/css/fileinput.css" media="all" rel="stylesheet" type="text/css"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" media="all" rel="stylesheet" type="text/css"/> <style type="text/css"> .main-section{ margin:0 auto; padding: 20px; margin-top: 100px; background-color: #fff; box-shadow: 0px 0px 20px #c1c1c1; } .fileinput-remove, .fileinput-upload{ display: none; } </style> </head> <body class="bg-danger"> <div class="container"> <div class="row"> <div class="col-lg-8 col-sm-12 col-11 main-section"> <h1 class="text-center text-danger">File Input Example</h1><br> <div class="form-group"> <div class="file-loading"> <input id="file-5" name="file[]" type="file" multiple> <input id="file-1" type="file" name="file" multiple class="file" data-overwrite-initial="false" data-min-file-count="2"> </div> </div> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.4.7/js/fileinput.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.4.7/themes/fa/theme.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" type="text/javascript"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" type="text/javascript"></script> <script type="text/javascript"> $("#file-1").fileinput({ theme: 'fa', uploadUrl: "imageUpload.php?ref=1183", allowedFileExtensions: ['jpg', 'png', 'gif'], overwriteInitial: false, maxFileSize:7000, maxFilesNum: 10, slugCallback: function (filename) { return filename.replace('(', '_').replace(']', '_'); } }); </script> </body> </html>

Code : Tout sélectionner

<?php include_once '../config/config.php'; if (!empty($_FILES['file'])) { $target ="images/".basename($_FILES['file']['name']); $uploads_dir = 'images/'; $image = basename($_FILES['file']['name']); $ip = $_SERVER['REMOTE_ADDR']; $datecrea = date("y-m-d"); $timevrea = date("H:i:s"); json_encode(['uploaded' => $target]); if(move_uploaded_file($_FILES['file']['tmp_name'], $target)){ echo json_encode(['uploaded' => $target]); $sql = "INSERT INTO `photo`(`id_photo`, `position_photo`, `ref_photo`, `lien_photo`, `nom_photo`, `date_photo`, `heure_photo`, `ip_photo`) VALUES (NULL, '1', '1234', '/assets/img/produit_location/', '$target', '$datecrea', '$timevrea', '$ip')"; $bdd->exec($sql); }else{ echo json_encode(['error'=>'No files found for upload.']); } } ?>
Pouvez vous m'aider merci