Je tente de créer des miniatures de photos en utilisant la bibliothèque GD de PHP.Bibliothèque PHP GD redimensionner la photo
Voici les étapes que je suis en train de suivre.
- Créer une ressource d'image GD.
- Obtenez la hauteur et la largeur de l'image
- créer une ressource d'image GD vide à 100 pixels de haut par largeur appropriée
- copie image une ressource à l'image GD vide et enregistrer les images
Voici mon code :
private function getExtension($filename) {
$position=strrpos($filename, '.');
$extension = strtolower(substr($filename, $position+1));
if ($extension == "jpg") {
$extension = "jpeg";
}
return $extension;
}
public function saveImage($parameters) {
$extension=$this->getExtension($parameters['filename']);
$createImageFunc="imagecreatefrom".$extension;
$imgResource=$createImageFunc(SITE_PATH."tmp/{$parameters['filename']}");
$width=imagesx($imgResource);
$height=imagesy($imgResource);
$ratio=$height/$width;
$thumbnail=imagecreatetruecolor(100, 100*$ratio);
imagecopyresized($thumbnail, $imgResource, 0, 0, 0, 0, 100*$ratio, 100, $width, $height);
$imgResult=imagejpeg($imgResource, SITE_PATH."images/{$parameters['galleryName']}/{$parameters['filename']}");
$thumbResult=imagejpeg($thumbnail, SITE_PATH."images/{$parameters['galleryName']}/thumbnails/{$parameters['filename']}");
}
les images économisent, mais la copie ne fonctionne pas, il est vide espace noir dans l'image miniature.
Ceci est l'image originale:
C'est l'image enregistrée à nouveau avec GD:
C'est la miniature:
J'ai vérifié comme quadruple imagecopyresize et D'après ce que je comprends, toutes les valeurs du code devraient être correctes.
Voici ce que php.net a pour les valeurs:
bool imagecopyresized (resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h)
Toute personne a des idées?
vérifiez la largeur de votre destination en copie – Poonam