Convertisseur jpeg -> swf

Soyez le premier à donner votre avis sur cette source.

Vue 26 791 fois - Téléchargée 832 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
1
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
15 janvier 2003

ouais c clair...et pis fo arreter de se faire des illusions: au moins 50% des utilisateurs de flash MX n'ont pas la version originale mais la version crckée (provenant du studio MX piraté qui a fait le tour des milieux...comment dire...euh..."underground" lol)
Messages postés
1258
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
qui t'as parlé d'acheter Flash MX?
http://62.152.9.212/katz/page1.shtml

si C pour le boulot ou si C commercial faut acheter, mais pour des etudiant comme moi, C hors budget alors pour apprendre, ya que ça! :)
Messages postés
1
Date d'inscription
jeudi 25 avril 2002
Statut
Membre
Dernière intervention
29 avril 2002

Certes, FMX permet de charger des jpegs dynamiquement, ceci-dit : Tant qu'au moins 90% des internautes n'auront pas le plug Flash 6, je resterai en Flash 5, et aussi tout le monde n'a pas les moyens de se payer la mise à jour Flash MX ...
Pour que le web soit accessible au plus grand nombre ....
Messages postés
6
Date d'inscription
vendredi 12 avril 2002
Statut
Membre
Dernière intervention
13 janvier 2004

on peut s'en passer quand on utilise flash MX
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009

COOOOOOOL !!!!! On peut se passer de generator!

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)