OK, je pensais avoir compris cette fonction, mais j'ai un bloc mental complet sur celui-ci. Je voulais créer des vignettes rognées de taille 75x75 à partir de photos de 800x536.imagecopyresampled en PHP, quelqu'un peut-il l'expliquer?
La fonction de copie d'image recopiée a 10 paramètres possibles. J'ai d'abord essayé ceci:
// Starting point of crop
$tlx = floor(($width/2) - ($new_width/2)); //finds halfway point of big image and subtracts half of thumb.
$tly = floor(($height/2) - ($new_height/2)); //gets centre of image to be cropped.
imagecopyresampled($tmp_img,$img,0,0,$tlx,$tly,$new_width,$new_height,$orig_width,$orig_height);
ce trouve de chaque côté de la marque à mi-chemin sur la grande image et cultures dehors. ou alors je pensais. mais il actuall recadre un peu de l'image et laisse le côté droit et le fond en noir (vraisemblablement de l'imagecreatetruecolor plus tôt.)
ainsi j'ai trouvé un moyen de faire ce que je veux mais je veux que vous expliquiez comment cela fonctionne .
j'ai maintenant:
//Create thumbnails.
$new_width = 75; //pixels.
$new_height = 75;
if($width > $height) $biggest_side = $width;
else $biggest_side = $height;
//The crop size will be half that of the largest side
$crop_percent = .5;
$crop_width = $biggest_side*$crop_percent;
$crop_height = $biggest_side*$crop_percent;
$c1 = array("x"=>($width-$crop_width)/2, "y"=>($height-$crop_height)/2);
//Create new image with new dimensions to hold thumb
$tmp_img = imagecreatetruecolor($new_width,$new_height);
//Copy and resample original image into new image.
imagecopyresampled($tmp_img,$img,0,0,$c1['x'],$c1['y'],$new_width,$new_height,$crop_width,$crop_height);
qu'il fait parfaitement, rétrécir l'image, puis affleurant au milieu, mais mes mathématiques ne sont pas très forte et aussi je pense qu'il est certainement que je ne comprendre pleinement la fonction de copie d'image recopiée
quelqu'un peut-il me promener à travers elle? paramètre par paramètre. surtout les deux derniers. à l'origine je suis entré dans la largeur et la hauteur de l'image originale, mais cela entre 400 et 400 (la moitié du côté le plus long). désolé pour la diatribe. espère que mon esprit comprend ce bientôt :)
Alex
wow merci beaucoup. Donc, vous utilisez les paramètres end_x et end_y pour les coordonnées d'arrêt, quand le manuel (je regarde ça beaucoup) dit que c'est la largeur et la hauteur Maintenant, ce que j'utilise maintenant, c'est que ça marche a 400x400 dans end_x et end_y, donc ça veut dire qu'il faut couper 400x400 du centre et que ça rétrécit en 75x75? –
quand il dit "image source" pour le end_x/end_y, c'est la fin de la PIECE de l'image source que vous voulez travailler avec. Si vous voulez réduire l'image entière, c'est la hauteur/largeur de l'image originale. Sinon, c'est juste la hauteur/largeur du morceau que vous découpez. –
droite donc im juste rétrécir un 400 par 400 morceau de l'image entière, puis en prenant le milieu 75x75 carrés de cela? Je pense que je comprends. huzzah! –