Maison > développement back-end > tutoriel php > Comment conserver les proportions de l'image lors du recadrage d'images en PHP ?

Comment conserver les proportions de l'image lors du recadrage d'images en PHP ?

Patricia Arquette
Libérer: 2024-11-03 16:46:03
original
499 Les gens l'ont consulté

How to Maintain Image Aspect Ratio When Cropping Images in PHP?

Recadrage d'images en PHP

Lors du recadrage d'images en PHP, vous pouvez rencontrer des problèmes, notamment lorsqu'il s'agit d'images de grande taille. Une solution consiste à « réduire l’image ».

Dans l'exemple de code donné, l'image est recadrée à une taille fixe (200x150), ce qui peut ne pas convenir à des images plus grandes. Pour obtenir des dimensions d'image cohérentes avant le recadrage, il est recommandé d'utiliser la fonction imagecopyresampled().

La formule suivante peut être utilisée pour générer des vignettes :

$image = imagecreatefromjpeg($_GET['src']);
$filename = 'images/cropped_whatever.jpg';

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
    // 图像更宽(纵横比意义上)
    $new_height = $thumb_height;
    $new_width = $width / ($height / $thumb_height);
}
else
{
    // 缩略图更宽
    $new_width = $thumb_width;
    $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// 调整大小并裁剪
imagecopyresampled($thumb,
    $image,
    0 - ($new_width - $thumb_width) / 2, // 水平居中图像
    0 - ($new_height - $thumb_height) / 2, // 垂直居中图像
    0, 0,
    $new_width, $new_height,
    $width, $height);
imagejpeg($thumb, $filename, 80);
Copier après la connexion

Ce code prend en compte le rapport hauteur/largeur de l'image, garantissant que l'image redimensionnée a le même rapport hauteur/largeur que la taille de la vignette, évitant ainsi la distorsion. Après redimensionnement et recadrage, il produira une image de taille constante quelle que soit la taille de l'image d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal