php et traitement d'image : votre avis

  • Auteur de la discussion Auteur de la discussion theJB
  • Date de début Date de début
WRInaute occasionnel
salut,
je dois faire un script qui prend une image, la lisse (application d'un flou gaussien via une transfo de fourrier rapide) et renvoie l'image lissée.

Mon big problème, c'est que pour faire faire ça je converti l'image en un tableau de nombres correspondants aux niveaux de gris de chaque pixel et que rien que pour passer de l'image (une image toute petite rikiki) il me faut 0.65s et pour repasser d'un tableau à une image 0.22s.

Qq1 aurait il une astuce pour manipuler des grosses données en mémoire avec php sans faire ramer?? (ma FFT prend 2 minutes alors que photoshop fait ça en direct!!)

bref help..
 
WRInaute passionné
theJB a dit:
Qq1 aurait il une astuce pour manipuler des grosses données en mémoire avec php sans faire ramer?? (ma FFT prend 2 minutes alors que photoshop fait ça en direct!!)

Je n'ai pas de réponse à ta question, mais juste une petite remarque :
photoshop est un programme natif, compilé.
Le php est interprété sur un serveur, donc il est normal qu'il y ait une énorme différence de temps d'exécution.
 
WRInaute occasionnel
c'est nickel!!
il me reste plus qu'à voir comment ça peut s'utiliser avec php.
question rapidité, c'est efficace?

un immense merci à toi!
 
WRInaute impliqué
oui c'est rapide.
Benchmarks simples : http://www.baschny.de/graphic-test/summary.html

Pour l'utilisation, voici un petit bout de code issu de phpBB3. $config['img_imagick'] contient le path de la commande.

Code:
	// Only use imagemagick if defined and the passthru function not disabled
	if ($config['img_imagick'] && function_exists('passthru'))
	{
		@passthru(escapeshellcmd($config['img_imagick']) . 'convert' . ((defined('PHP_OS') && preg_match('#^win#i', PHP_OS)) ? '.exe' : '') . ' -quality 85 -antialias -sample ' . $new_width . 'x' . $new_height . ' "' . str_replace('\\', '/', $source) . '" +profile "*" "' . str_replace('\\', '/', $destination) . '"');

		if (file_exists($destination))
		{
			$used_imagick = true;
		}
	}

Edit : et il y a aussi un moyen plus php style :
http://fr3.php.net/manual/en/ref.imagick.php
 
Discussions similaires
Haut