Convertisseur jpeg -> swf

0/5 (3 avis)

Vue 7 329 fois - Téléchargée 315 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
francisnguyen
Messages postés
5
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
17 octobre 2007

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

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

25 avril 2002 à 11:17
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)