begin process at 2010 02 10 12:28:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > SOLUTION A LA CONTRAINTE DU FORMAT UNIQUE EN CHARGEMENT D'IMAGE (LE JPG "NON PROGRESSIVE")

SOLUTION A LA CONTRAINTE DU FORMAT UNIQUE EN CHARGEMENT D'IMAGE (LE JPG "NON PROGRESSIVE")


 Information sur la source

Note :
9,86 / 10 - par 7 personnes
9,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Débutant Date de création :19/05/2004 Date de mise à jour :30/05/2004 12:17:22 Vu :9 407

Auteur : BlackWizzard

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note


 Description

Beaucoups de flasheurs sont emmerdés a cause de la contrainte qu'impose macromedia avec loadMovie().
On ne peut charger que des jpg "non progressive".
Le probleme, c'est que sur certains contrats, on doit charger des images gif par exemple (tres frequent) ou png. Flash ne charge pas ces formats.
Je vous propose donc une solution non pas en flash, mais en php.

Non, je ne me suis pas trompé de site, et je ne posterai pas ce code sur phpcs, car c'est aux flasheurs que j'adresse ce code.

Source

  • <?php
  • # begin-configuration
  • $maxWidth = 200;
  • $maxHeight = 200;
  • # end-configuration
  • header("Content-Type: image/jpeg");
  • // amelioration de detection de l'extention par Bricomix
  • $ext = strtolower(substr($pic, strrpos($pic, '.') + 1));
  • switch($ext) {
  • case "jpg":
  • case "jpeg":
  • $img_in = imagecreatefromjpeg($pic);
  • break;
  • case "gif":
  • $img_in = imagecreatefromgif($pic);
  • break;
  • case "png":
  • $img_in = imagecreatefrompng($pic);
  • break;
  • default:
  • }
  • list($width, $height, $type, $attr) = getimagesize($pic);
  • if (empty($noresize)) {
  • $ratio = $width/$height;
  • if ($ratio>=0) {
  • $nw = $maxWidth;
  • $nh = $maxHeight/$ratio;
  • } else {
  • $nw = $maxWidth/$ratio;
  • $nh = $maxHeight;
  • }
  • } else {
  • $nw = $width;
  • $nh = $height;
  • }
  • $img_out = imagecreatetruecolor($nw, $nh);
  • imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
  • $t = imagejpeg($img_out);
  • echo $t;
  • ?>
<?php
# begin-configuration
$maxWidth 	= 200;
$maxHeight 	= 200;
# end-configuration

header("Content-Type: image/jpeg");
// amelioration de detection de l'extention par Bricomix
$ext = strtolower(substr($pic, strrpos($pic, '.') + 1));
switch($ext) {
	case "jpg":
	case "jpeg":
		$img_in = imagecreatefromjpeg($pic);
		break;
	case "gif":
		$img_in = imagecreatefromgif($pic);
		break;
	case "png":
		$img_in = imagecreatefrompng($pic);
		break;
	default:
	
}
list($width, $height, $type, $attr) = getimagesize($pic);
if (empty($noresize)) {
	$ratio = $width/$height;
	if ($ratio>=0) {
		$nw = $maxWidth;
		$nh = $maxHeight/$ratio;
	} else {
		$nw = $maxWidth/$ratio;
		$nh = $maxHeight;
	}
} else {
	$nw = $width;
	$nh = $height;
}
$img_out = imagecreatetruecolor($nw, $nh);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));

$t = imagejpeg($img_out);
echo $t;

?>

 Conclusion

Ce script va resoudre vos problemes.
seul contrainte, il ne charge que les images sur le meme server que le script. (ce qui est le cas la pluspart du temps).

l'utilisation est simple:
- pour convertir un gif, un png ou un jpg "progressive" en jpg "non progressive":
loadMovie("img.php?pic="+imageURL+"& noresize=true");

- pour convertir un gif, un png ou un jpg "progressive" en jpg "non progressive", et la redimentionner en gardant les proportions:
loadMovie("img.php?pic="+imageURL);
D ans ce dernier cas, vous devez configurer le script php pour specifier la hauteur et la largeur maximum.

Je ne met pas de source d'exemple car ceux qui ont ce probleme savent se servir de loadMovie


 Sources du même auteur

Source avec Zip Source avec une capture SPORE-LIKE DEMO
Source avec Zip Source avec une capture LINECHART / AREACHART : COMPOSANT AS2, SOURCE XML, STYLE PAR...
Source avec Zip COURS FLASH: COMMUNICATION FLASH/PHP
Source avec Zip 3D TEMPS REEL EN AS2
Source avec Zip Source avec une capture CLASS PIECHART: CODE ET COURS (8 PAGES FLASHPAPER/WORD)

 Sources de la même categorie

Source avec Zip Source avec une capture BASE SCOLL SUPER SIMPLE par top30
Source avec Zip AS3 PROTOTYPE par top30
Source avec Zip Source avec une capture VERIFICATION SI UN E-MAIL SAISI EST VALIDE par hadjle
Source avec Zip Source avec une capture GESTIONNAIRE KEYBOARDEVENT (TOUCHE MULTIPLE) par Blacknight91titi
Source avec Zip Source avec une capture RENDERDELEGATION: UNE CLASSE SUR L'EVENT.RENDER DU STAGE... par top30

Commentaires et avis

Commentaire de SuperDevy le 20/05/2004 16:33:49

Alors là, chapeau...
Depuis le temps que je me fais ch.. à convertir toutes mes images. Je sens que je vais faire des économies de temps.

Je ne l'ai pas encore testé, mais j'ai l'impression que ça va être pas mal du tout.

                                        --[10/10]--

Commentaire de BlackWizzard le 20/05/2004 16:38:54 administrateur CS

j'ai oublié de preciser que ce script ne tourne que si vous disposez de la librairie GD2 (a cause de imagecreatetruecolor()).

Commentaire de Bricomix le 29/05/2004 10:54:15

Petite erreur ;)

Tu as mis cette ligne : case "peg"

Je pense que c'est case "jpeg" :)

Commentaire de BlackWizzard le 29/05/2004 10:57:33 administrateur CS

non, ya pas d'erreur...
regarde le code:
$ext = substr($pic, -3);
donc, si le fichier est .jpeg et non pas .jpg, alors $ext sera "peg".

Commentaire de Bricomix le 29/05/2004 11:04:47

Alors dans ce cas je pense que le mieux est de remplacer "$ext = substr($pic, -3);" par "$ext = strtolower(substr($pic, strrpos($pic, '.') + 1))"

Ainsi tu récupères vraiment l'extension et de plus avec ta solution, il suffit que l'extension soit ".jpG" pour que ça ne fonctionne pas...

Tu peux donc ensuite replacer par "jpeg" :)

Commentaire de BlackWizzard le 29/05/2004 11:14:05 administrateur CS

et si l'image est pic.02.04.jpg? ya pleins de points ça marche pas... je prefere ma solution, avec un strtolower si tu vx...

Commentaire de Bricomix le 29/05/2004 12:40:20

strrpos() renvoie la position de la dernière occurence ;)

Ainsi tu aruas jpg même avec pic.02.04.jpg :) Je viens de tester et ça fonctionne parfaitement...

Commentaire de BlackWizzard le 29/05/2004 12:50:56 administrateur CS

ok, alors oubliez tout ce que je vien de dire ;)

Commentaire de bongawonga le 29/05/2004 17:41:33

Chapeau bas, honorable BW, ton PHP va m'etre vraiment tres utile
parcontre je vois pas qu'est-ce que la librairie GD2?

Si tu n'y vois pas d'objection, j'aimerais beaucoup l'intégrer à ma source "open panda gallery". voici le lien:
http://www.flashkod.com/code.aspx?ID=23023

ps: Mais comment qui fait BW pour aussi fort??
il mange tous les matins 1kg de colins pannés de chez capitain Glou, bien sûr


Commentaire de BlackWizzard le 29/05/2004 19:03:14 administrateur CS

mdr ;)
GD2 c une librairie de php. si le script fonctionen chez toi, te pose pas de question ;)
au cas ou, regarde le phpinfo de ton server... il indique les librairies installés.
Pour open panda gallery, heu.... bof...  je sais pas trop... va-y! c là pour ça!! ;)

Commentaire de Bricomix le 30/05/2004 12:15:27

Arf encore une petite erreur... à la fin de la ligne "$ext = strtolower(substr($pic, strrpos($pic, '.') + 1))" tu as mis un " au lieu d'un ;

Commentaire de BlackWizzard le 30/05/2004 12:17:03 administrateur CS

arf...

Commentaire de Bricomix le 30/05/2004 12:19:39

Rien de grave... ;)

Y'a toujours des jours où il vaudrait mieux ne pas lancer l'ordi :D

Commentaire de BlackWizzard le 30/05/2004 12:21:13 administrateur CS

ne pas allumer l'ecran plutot... le pc lui est allumé depuis je sais plus combien de semaines ;)

Commentaire de Crazyx le 11/04/2005 08:50:47

BlackWizzard ton script est tout simplement sublime. Non seulement il m'a permis de passer outre le probleme que j'ai de redimensionnement des Jpg chargé grâce à LoadMovie (je te raconte pas c'etait la galère mais tu ne t'imagine même pas)  mais en plus il m'a permis de créer ma gallerie photo sans contrainte (jpg progressif, gif) et sans que j'ai à me préoccupé du redimensionnment ( tes variables max weight et width) .
Tout simplement sublime ! par contre en voyant la date ton script date d'un AN ???? j'ai vraiment été stupide de me prendre la tête des semaines pour rien ! Chapeau bien bas monsieur !

Commentaire de BlackWizzard le 11/04/2005 16:00:45 administrateur CS

deja un an :|
waow...
ça passe trop vite le temps!

content que ça servent a quelqun!

Commentaire de Crazyx le 12/04/2005 00:29:12

A mon avis je vé faire un lien vers cette page sur le forum parce que y'a tellement de gens qui arrivent toujours pas à charger des gifs ! :S ! En tout cas moi ca m'a vraiment dépanné merci encore

Commentaire de SilverMaster le 23/06/2005 03:16:51

Mais dites... il doit bien y avoir un inconvéniant, non ? Sinon moi je ne génère plus jamais de miniature opur mes galeries ! (html ou autre, j'précise)

Parce que à ce que j'ai compris : ça occupe pas de place sur le disque et ça prend la même bande passante qu'une image miniature... pis sur un mutu osef des ressources (:p) donc heu... ?!

Commentaire de darktaek le 25/08/2005 16:28:24

Il y avait un petit truc qui me chiffonnait mais apparemment ça marche.

On peut charger des images d'un site distant à condition que le php y soit

Exemple :

le site http://machin.free.fr contient img.php et img.png sur sa racine et le site http://www.truc.com contient img.swf
Dans le load movie il suffit de mettre l'url absolue du php pour pouvoir afficher img.png
loadMovie("http://machin.free.fr/img.php?pic="+"img.png");

Mais du coup ça ne reste fesable qu'avec un espace qui nous appartient (pour y mettre le php)
Enfin bref pour moi ça sera utile et ce code c'est du pain béni.

Commentaire de CChargy le 16/09/2005 21:16:04

Et pour la transpârence sur les images png, cela donne koi?
Comment on la remet dans flash?

Colin CHARGY

Commentaire de BlackWizzard le 17/09/2005 00:42:59 administrateur CS

on ne peut pas remettre la transparence.
Par contre, flash 8 charge tous les format desormais, avec la transparence.

Commentaire de Knolan le 12/10/2005 11:16:35

Je suis en train d'utiliser ton code un peu modifié pour qu'il redimenssionne tout le tps mon image, et je me suis rendu compte d'un truc c'est que le redimenssionnement se faisait mal quand la hauteur etait plus grande que la largeur.
exemple: une image de 1200*1600 me donnait une image de 100*133
explication:
quand tu divise par un chiffre inférieur a 1 tu multiplie par son inverse en fait, donc faut multiplier quand tu te retrouve avec un ratio inférieur a 1 et comme tu étalonne tout le tps sur la largeur, ben ca foirait :(

J'ai un peu modifié ta source, ca donne ca (les lignes 27 et 31 ont changé)
if ($ratio >= 1) {
$nw = $maxWidth;
$nh = $maxHeight/$ratio;
} else {
$nw = $maxWidth*$ratio;
$nh = $maxHeight;
}

chez moi ca marche bien comme ca :)
voila j'espere que ca pourra servir à des gens :)

Commentaire de BlackWizzard le 13/10/2005 16:58:22 administrateur CS

j'avais detecté ce bug egalement, et je l'ai corrigé ya deja longtemps, mais je n'avais pas pensé a updater le code.
Merci de preciser la correction ;)

Commentaire de lOeil le 23/05/2006 10:32:38

je ne comprend pas une ligne

case "jpg":


Pourquoi tu n'effectues pas d'actions si l'extension est jpg ?

Commentaire de BlackWizzard le 23/05/2006 15:10:47 administrateur CS

#     case "jpg":
#     case "jpeg":
#         $img_in = imagecreatefromjpeg($pic);
#         break;


Dans un switch, le code s'execute jusqu'a la fin du switch ou jusqu'à l'apparition d'une instruction "break;"
Dans le cas ci-dessus, si l'extention est "jpg", le code va continuer à s'executer jursqu'à l'instruction "break;".
ça permet de ne pas repeter le code ;)

Commentaire de lOeil le 29/05/2006 13:47:29

merci pour cette explication, cela va pouvoir aléger mon code par moment :)

Commentaire de hayman le 01/11/2007 19:46:47

Bonjour bonjour! Moi, je suis un noob (autant le dire directement) J'ai lu ves comentaires et jvoulai savoir
si on pouvait me redoner le code "sans erreurs",( ou me donner une sources comprehensible et simple)
et me dire où faut-il metre ce code. J'ai un petit site qui était sur le point d'ouvrir ses porte jusqu'au moment où,
aprés avoir transféré mes image sur "free", je m'apercois qu'aucune image ne se charge...

Merci d'avance! jspr ke le moyen d'y parvenir est simple!

Commentaire de CChargy le 02/11/2007 22:52:41

Bonjour bonjour!
Revenons sur ton problème mon cher ...
Tu bosse avec quel Flash ? 7, 8, MX ?
Il y a très longtemps que je n'ai touché a flash, donc dites moi si je me trompe!
Sous Flash 8, => Pas de problème avec les formats (BW m'as fait la remarque plus haut).
Sous 7/MX => Le code est en haut et à jour il me semble, tu n'as qu'a te servir...
Sous Flash < 7 => Je ne peux pas t'aider, mais je peux te conseiller de te mettre à jour ...

En tous cas, bravo à BW pour ce code (vieux!) mais utile....
Bonne prog!
En espérant t'avoir aider
A+
Colin  CHARGY

Commentaire de hayman le 03/11/2007 14:32:24

c'est a dire ke jutilise flash 8 héhé! mais bon en tant ke debutant c normal ke tou les élément flash se dechaine contre mes prjes!! ^^ jvais essayer de me debrouiller, jvou dirai si je bloke!

Commentaire de emyyy le 28/12/2007 16:38:37

salut
si vous pouvez m'aider
je charge des image sur un movie clip vide k j'ai creer en fllash
j'utilise flash8 mé qd mm les gif ca n marche pas voici mon code de chargement

  _root.onLoad=function(){
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip(_root.url_pictures, conteneur);
}

je charge depuis le fichier php "list-new.php" qui recupere les images de la bdd
voici le code

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=  "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="390" height="382">
  <param name="movie" value="images/zooom.swf">
  <param name="quality" value="high">
  <param name="url_pictures" value="<?echo $map_name ; ?>" />
   <embed  src="images/zooom.swf?url_pictures=<?echo $map_name ; ?>"
quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="390" height="382"></embed>
</object>


lorsque je met au lieu de ca <?echo $map_name ; ?> le lien d'une image jpg dans la base ca marche par contre lorsque je met le lien d'une gif non


jaimerai savoir si mon code est sufisant pour charger ca <?echo $map_name ; ?> et si ya une solution pr charger des gif xar ma base contient des milier d'image gif.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales