Découpage de l'image en PHP
Le code ci-dessous cultures de l'image, qui est ce que je veux, mais pour les images plus grandes, il wotn travail. Est-il possible de "zoom arrière de l'image'
Idéalement, je voudrais être en mesure d'avoir chaque image à peu près de la même taille avant de recadrage, de sorte que je voudrais obtenir de bons résultats à chaque fois
Code est
<?php
$image = $_GET['src']; //the image to crop
$dest_image = 'images/cropped_whatever.jpg'; //make sure the directory is writeable
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromjpeg($image);
$ims = getimagesize($image);
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
imagejpeg($img,$dest_image,90);
imagedestroy($img);
echo '<img src="'.$dest_image.'" ><p>';
- Êtes-vous essayer de créer des vignettes?
- oui, je suis en train de créer des vignettes
- Pour de telles tâches, vous devriez envisager d'utiliser une bibliothèque. Je recommande Intervention de l'Image. Par exemple, voir ces méthodes:
resize()
,fit()
.
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de générer les vignettes, vous devez d'abord redimensionner l'image à l'aide de
imagecopyresampled();
. Vous devez redimensionner l'image, de sorte que la taille de la plus petite dimension de l'image est égale au côté correspondant de la manette.Par exemple, si votre image source est 1280x800px et votre pouce est 200x150px, vous devez redimensionner votre image à 240x150px et ensuite la recadrer à 200x150px. C'est ainsi que le ratio d'aspect de l'image ne change pas.
Voici une formule générale pour la création des vignettes:
Ne l'ai pas testé, mais c' devrait travail.
MODIFIER
Maintenant testé et de travail.
$image = imagecreatefromjpeg($_GET['src']);
avec$image = imagecreatefromstring(file_get_contents($_GET['src']));
.imagedestroy
sur$image
et$thumb
. Il fonctionne parfaitement une fois, mais si vous prenez ce code et de le mettre dans une boucle, il sera frapper la limite de la mémoire.imagecopyresampled()
prendra une zone rectangulaire de$src_image
de largeur$src_w
et la hauteur$src_h
à la position($src_x, $src_y)
et le placer dans une zone rectangulaire de$dst_image
de largeur$dst_w
et la hauteur$dst_h
à la position($dst_x, $dst_y)
.Si la source et la destination des coordonnées et de la largeur et de la hauteur des différents, appropriés, l'étirement ou la réduction de l'image copiée sera effectuée. Les coordonnées se réfèrent au coin supérieur gauche.
Cette fonction peut être utilisée pour copier des régions au sein de la même image. Mais si les régions se chevauchent, les résultats seront imprévisibles.
- Edit -
Si
$src_w
et$src_h
sont plus petits que$dst_w
et$dst_h
respectivement, de pouce de l'image sera agrandie. Sinon, il sera un zoom arrière.Amélioration de la Culture de l'image fonctionnalités en PHP à la volée.
Code dans
cropimage.php
Doit être remplacé par ceci:
Parce que
imagecreatefromjpeg()
attend une chaîne de caractères.Cela a fonctionné pour moi.
ref:
http://php.net/manual/en/function.imagecreatefromjpeg.php
php 5.5 a un imagecrop fonction http://php.net/manual/en/function.imagecrop.php
Pour un moindre côté serveur PHP/ approche, voilà une belle plugin jQuery.
Que l'on pourrait faire tous les ajustements nécessaires - le zoom, et le ratio d'aspect, genre - sur le côté client et envoyer le final de la zone recadrée la position et la taille de la côté serveur pour la finale de la manipulation et de l'épargne. Le docs dire à peu près suffisant pour vous d'obtenir à bascule.
Code HTML:-
upload.php
Doit être remplacé par:
Ensuite, il sera!