Convertisseur jpeg -> swf

Soyez le premier à donner votre avis sur cette source.

Vue 7 206 fois - Téléchargée 312 fois

Description

C'est une fonction entièrement écrite en PHP qui transforme à la volée des images JPEG en SWF de même taille et même compression. Fonctionne avec Flash 5 et ne necessite aucun outil compilé côté serveur.

php_swf_jpp ("image.jpg","image.swf");

-> Génére un swf sur le serveur "image.swf" à partir du JPEG "image.jpg"

Un alternative pour les serveurs (gratuits) ne suportant pas ming ...

PS : La hauteur ou la largeur de l'image ne doit excéder 400 (400x400 px), l'image JPEG ne doit pas être compressée en mode progressif ou optimisé.

Source / Exemple :


<?php
function comp2($n){
	$bin=decbin($n);
	while (strlen($bin)<13)$bin="0".$bin;
	for ($i=0;$i<strlen($bin);$i++){
		if (substr($bin,$i,1)=="0"){
			$rev=$rev."1";
		}else{
			$rev=$rev."0";
		}
	}
	$neg=bindec($rev)+1;
	$neg=decbin($neg);
	while (strlen($neg)<13)$neg="0".$neg;
	return ("1".$neg);
}
function convbinhex($n){
	$size=intval(strlen($n)/4);
	for ($i=0;$i<$size;$i++){
		$part=substr($n,$i*4,4);
		$val=bindec($part);
		$retour=$retour.dechex($val);
	}
	return ($retour);
}
function convsize($n,$base){
	$hex=dechex($n);
	while (strlen($hex)<$base)$hex="0".$hex;
	for ($i=0;$i<$base/2;$i++){
		$retour=$retour.substr($hex,$base-$i*2-2,2);
	}
	return ($retour);
}
function php_swf_jpg ($jpg,$swf){
	$image=$jpg;
	$sizejpg=getimagesize($jpg);
	$width=$sizejpg[0];
	$height=$sizejpg[1];
	$size=filesize($jpg);
	$twips_width=$width*20;
	$twips_height=$height*20;
	$bin_width=decbin($twips_width);while(strlen($bin_width)<14)$bin_width="0".$bin_width;
	$bin_height=decbin($twips_height);while(strlen($bin_height)<14)$bin_height="0".$bin_height;
	$bin_zero="00000000000000";
	$nbits="01110"; // 14
	$size_rect=$nbits.$bin_zero.$bin_width.$bin_zero.$bin_height;
	while (strlen($size_rect)<64)$size_rect=$size_rect."0";
	// Definir l'en tête
	$head=convbinhex($size_rect)."000c"."0100"."4302"."ffffff"."7f05".convsize($size+6,8);
	$head=$head."0100"."ffd9"."ffd8";

	// Définir la cloture du swf
	$rect="1"."10110"."0101000000000000000000"."0101000000000000000000"."0"."00000";
	$rect=$rect."00000000"."0001"."0000"."0"."00101"."01110".$bin_width.$bin_height."1";
	$rect=$rect."11110000".comp2($twips_width);
	$rect=$rect."11110001".comp2($twips_height);
	$rect=$rect."11110000".$bin_width;
	$rect=$rect."11110001".$bin_height;
	$rect.="00000000";

	$fin="bf00"."28000000"."0200".convbinhex($size_rect)."01"."41"."0100".convbinhex($rect);
	$fin=$fin."8606"."0601"."0002"."0000400000007777772E666F78617765622E636F6D";
	$fp=fopen ($image,"rb")or die ("impossible");

	$i=0;
	while(!feof($fp)){
		$char=fgetc($fp);
		$vn=ord($char);
		$tbl[$i]=$vn;
		$i++;
		
	}
	fclose($fp);
	$file_size=$size+strlen($fin)/2+strlen($head)/2+8;
	$head="46575305".convsize($file_size,8).$head;
	$fp=fopen($swf,"wb");
	for ($i=0;$i<strlen($head);$i+=2){
		$c=substr($head,$i,2);
		$val=hexdec($c);
		$push=chr($val);
		fwrite($fp,$push);
	}
	for ($i=0;$i<$size;$i++){
		$push=chr($tbl[$i]);
		fwrite ($fp,$push);
	}
	for ($i=0;$i<strlen($fin);$i+=2){
		$c=substr($fin,$i,2);
		$val=hexdec($c);
		$push=chr($val);
		fwrite($fp,$push);
	}
	fclose($fp);
}

?>

Conclusion :


Incluez simplement les 4 fonctions ci dessus et faite appel à la fonction php_swf_jpg()

Ex (en supposant que l'image voiture.jpg se trouve sur le serveur) :
<?php
include ("php_swf_jpg.php");
php_swf_jpg("voiture.jpg","resultat.swf");

print ("<a href='resultat.swf'>");
?>

Si vous rencontrez un Bug, faites moi parvenir vos codes sources et votre image et un déscriptif du bug.

php_swf_jpg@foxaweb.com

La fonction est aussi en téléchargement à http://www.foxaweb.com/php_swf_jpg/

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
5
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
17 octobre 2007

Peut on insérer plusieurs images ou du texte et ajouter des animations.
Ben quoi on a le droit de rever!!!!
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

Un grand bravo.. c un truc de boss ;)
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

Lut Foxy :)
ça à l'air sympa... on va essayer ça !

@ ++
OriOn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_foxy)