Forums Développement Multimédia

Aller au contenu

ByteArray et enregistrement TXT méthode de cryptage

CODE Actionscript

1 réponse à ce sujet

#1 asld

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 13 October 2011 - 12:57 PM

Bien le bonjour à vous,

Je viens vers vous pour tenter de trouver une, ou des pistes de solutions.

Ma problématique :

Je développe une application Air (IDE Flash) en Action script 3 dont la fonction est de télécharger des images (JPG, PNG) depuis un serveur WEB, et de les enregistrer sur le disque de l'utilisateur.

Jusque là, aucun problème. Par contre, je souhaite "crypter" ces images pour qu'elles ne soit pas directement modifiables, ou remplaçables par l'utilisateur.

Voici donc la technique que j'ai choisi de développer (à tord ou à raison, vous saurez peut-être me le dire).

L'application :

1. télécharge l'image depuis le serveur WEB.
2. depuis le BitmapData, je récupère le ByteArray (getPixels())
3. écrit le contenu dans un fichier texte (writeBytes())

puis,


4. charge le fichier texte.
5. récupère le contenu et l'écrit dans une variable ByteArray (writeUTFBytes())
6. reconstruit un BitmapData avec (setPixels())

C'est à cette dernière étape que je rencontre un problème, je ne parviens pas à récupérer mon image de base.
De plus, la longueur du ByteArray à l'enregistrement et différente de celle que je récupère depuis le fichier texte.

Autre soucis, mon fichier texte pèse prés de 4mo pour une image de 120ko... j'ai tenté une compression du ByteArray, mais sans succès.

J'espère avoir été clair, merci pour l'attention que vous porterez à mon post. (je joins les fichiers sources)

Bonne journée,

Guillaume

Fichier(s) joint(s)

  • Fichier joint  Archive.zip   110.81 Ko   5 téléchargement(s)

Modifié par asld, 13 October 2011 - 12:59 PM.


#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 27 October 2011 - 09:02 AM

Bonjour,

Lorsque vous chargez les données enregistrées localement, définissez la propriété dataFormatde l'instance conteneurTextes sur URLLoaderDataFormat.BINARY. Ainsi, les données chargées seront directement une instance de ByteArray. Dans le handler onComplete, vous pouvez récupérer directement les données en tant que ByteArray: bd.setPixels(bd.rect, evt.target.data as ByteArray) ;

Il est normal que votre fichier enregistré soit plus lourd que le fichier original puisque vous enregistrez les données de chaque pixel sans compression. L'image fait 1024x768, Flash gérant une couche Alpha chaque pixel est enregistré sur 4 octets. Ce qui donne 1024x768x4 / 1024 = 3072 Ko.
Pour réduire la taille du fichier enregistré, utilisez les méthodes compress et uncompress de la classe ByteArray. La taille du fichier enregistré devrait être réduite à 1/3.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)