intégrer une API de redimmensionnement photo

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 : intégrer une API de redimmensionnement photo

par Tracker » 17 oct. 2007, 19:57

Salut,

Regarde le code qui suit, ça peut t'aider pour créer des vignettes de tailles identiques.
<?php
//
function jpegThumbNail
(
	$source, 	// chemin du fichier source. 
	$target, 	// chemin du fichier vignette.
	$szw, $szh, // taille w/h du cadre de la nouvelle image.
	$padding,	// $padding minimum de l'image au cadre.
	$bgcolor = array(255,255,255) // couleur de fond du cadre. 
)
{

	$isrc = imagecreatefromjpeg($source);
	$x 	= imagesx($isrc); $y = imagesy($isrc);
	$r 	= (($x / $y) > ($szw / $szh)) ?  $x / $szw : $y / $szh;
	$dx	= $padding+(int)round(($szw - $x / $r) / 2,0);
	$dy	= $padding+(int)round(($szh - $y / $r) / 2,0);
		
	$itar = imagecreatetruecolor($szw,$szh);
	imageantialias($itar,true);
		
	imagefill($itar, 0, 0, imagecolorallocate($itar, $bgcolor[0], $bgcolor[1], $bgcolor[2]));		
	imagecopyresampled($itar, $isrc, $dx, $dy, 0, 0, $szw-2*$dx, $szh-2*$dy, $x, $y);
		
	imagejpeg($itar, $target, 100);
		
	imagedestroy($isrc);
	imagedestroy($itar);
}

// Test
jpegThumbNail
(
	'http://www.did-art.fr/todon/images/ORIG_1164367278_scrat_01.jpg',
	'mini-scrat.jpg',
	200, 250,
	2,
	array(128,128,128)
);
header('content-type: image/jpeg');
readfile('mini-scrat.jpg');
?>

Tracker.

par jay64 » 17 oct. 2007, 19:20

en fait je m'en suis sorti en faisant comme ça plutôt :
<?php 
session_start();
$IdCli = $_SESSION['user_id'];

require_once('../../Connections/connection_jesuisne.php');
mysql_select_db($database_connection_jesuisne, $connection_jesuisne);

if(isset($_FILES['photo']))
{  
	$dest_dossier = '/homepages/30/d140516071/htdocs/push/images/';
	$dest_fichier = $IdCli.".jpg";
	//copie sur le serveur de la grande image de base
	move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.$dest_fichier);
}

$img = "../../push/images/".$dest_fichier;
//header('Content-type: ../../push/images/'); 

$ratio = .2; 

list($largeur, $hauteur) = getimagesize("$img");  
$n_largeur = $largeur * $ratio; 
$n_hauteur = $hauteur * $ratio; 


$destination = imagecreatetruecolor($n_largeur, $n_hauteur); 


$source = imagecreatefromjpeg("$img"); 


imagecopyresized($destination, $source, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur); 

imagejpeg($destination, "../../push/images/" . "mini.jpg"); 

header('Location: ../../MonCompte/fairepart_num.php');

?> 

par jay64 » 17 oct. 2007, 19:10

Bon, j'ai enté de faire ceci ci-dessous :
La grande image de base se récupère bien et se place sur mon serveur mais pas la miniature.

Pourriez-vous m'aiguiller sur mon erreur ? Merci !
<?php 
session_start();
$IdCli = $_SESSION['user_id'];

require_once('../../Connections/connection_jesuisne.php');
mysql_select_db($database_connection_jesuisne, $connection_jesuisne);

if(isset($_FILES['photo']))
{  
	$dest_dossier = '/homepages/30/d140516071/htdocs/push/images/';
	$dest_fichier = $IdCli.".jpg";
	//copie sur le serveur de la grande image de base
	move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.$dest_fichier);
}

$fichierSource = "../../push/images/".$dest_fichier;
      
    $largeurDestination = 200; 
    $hauteurDestination = 150; 
    $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)  
            or die ("Erreur lors de la création de l'image");  

    $source = ImageCreateFromJpeg($fichierSource); 
      
    $largeurSource = imagesx($source); 
    $hauteurSource = imagesy($source); 
    
   imagecopyresampled($im, $source, 8, 8, 0, 0, $largeurDestination-(2*8), $hauteurDestination-(2*8), $largeurSource, $hauteurSource); 
      
    imagestring($im, 0, 12, $hauteurDestination-18, "$fichierSource - ($largeurSource x $hauteurSource)", $blanc); 
   $miniature = "mini_".$fichierSource; 
	
	move_uploaded_file($miniature, $dest_dossier."mini.jpg");

header('Location: ../../MonCompte/fairepart_num.php');

?> 

par jay64 » 16 oct. 2007, 14:20

Ok, merci Ryle, je vais voir ce que je suis capable de faire avec tout ça !
Pas l'air si simple quand même ... !

par Ryle » 16 oct. 2007, 13:59

Certains sites proposent effectivement déjà ce service, tout comme le photo editor de windows... mais si tu veux l'implémenter toi même, il te suffit d'uploader l'image de l'utilisateur sur le serveur, l'ouvrir avec la fonction qui va bien (imageCreateFromPng(), imageCreateFromGif(), ...) utiliser getImageSize() pour connaitre les dimensions originales et conserver les proportions lors de la réduction, et imageCopyResized() pour générer l'image modifiée..

par Tracker » 16 oct. 2007, 13:57

Oui, mais ça je le propose déjà, merci quand même.
Moi, ce que je veux, c'est en fait intégrer un utilitaire en ligne qui ferait la conversion réduction de l'image
Cherche du côté flash, activex ou applet si tu trouves ton bonheur...

Tracker.

par jay64 » 16 oct. 2007, 13:51

Oui, mais ça je le propose déjà, merci quand même.
Moi, ce que je veux, c'est en fait intégrer un utilitaire en ligne qui ferait la conversion réduction de l'image

par Berzemus » 16 oct. 2007, 13:46

[snip: erreur, mauvais post, dsl]


[re-edit: non, j'ai la berlue, c'était bon, mais inutile apparament, et j'ai perdu mon texte.. j'arrête le pepsi max, juré.]

intégrer une API de redimmensionnement photo

par jay64 » 16 oct. 2007, 13:40

Bonjour,

J'ai un formulaire permettant à mes utilisateurs d'uploader une photo dans leur profil. Cependant, j'aurais besoin que la photo en question ne dépasse pas certaines dimensions et 150 ko.

Les utilisateurs avertis vont savoir se débrouiller tout seul et surtout retravailler l'image eux-même avant de faire l'upload, mais moi je voudrais faliciter la vie des autres. Ainsi, j'aimerais proposer sur mon site un redimmensionnement auto. Exemple, ils font parcourir, sélectionnent leur image d'origine, et un script que j'aurai développé ou une API existante se charge de retravailler l'image avant de faire l'upload.

J'ai déjà vu ça de mémoire sur d'autres site mais je ne sais pas comment intégrer cette fonctionnalité sur le mien. Sauriez-vous m'aider?

Merci !