Avant de commencer, il nous faut en apprendre plus sur le format ASE. Pour cela, deux solutions : soit on parvient à trouver les spécifications du format, ou au moins des informations même non officielles, ou bien on tente de faire de l'ingénierie inversée, à savoir on ouvre dans un éditeur hexadécimal un fichier ASE très simple, et on essaie de comprendre comment il est organisé.

J'ai choisi la première solution, car on trouve les spécifications du format ASE ici.

Moi je souhaite réaliser une palette avec les 5 couleurs suivantes : #FF0000, #00FF00, #0000FF, #FFFF00, et #00FFFF.

Voici comment procéder:

var pix:uint;
var swatch:ByteArray=new ByteArray(); //Je prépare un ByteArray pour chaque couleur.
var ase:ByteArray=new ByteArray(); //Je prépare mon ByteArray de sortie.
//mes 5 couleurs, de type uint
var colorsArray:Array = [ 0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF ];
var hex:String; // pour le nom de la couleur
var len:int=pixels.length; //je stocke le nombre de couleurs
ase.writeUTFBytes("ASEF"); // j'écris la signature du fichier
ase.writeInt(0x10000); // j'écris la version 
ase.writeInt(pixels.length * 2); //j'écris le nombre de couleurs (blocks)		
for (var i:int=0; i < len; ++i)
{
	pix=uint(colorsArray[i]); // pour une couleur
	swatch.length=0; // Je prépare un ByteArray
	ase.writeShort(0xC001); // on déclare une couleur ou un groupe, ici un groupe
	ase.writeInt(0); //ceci semble être une sorte de déclaration de début
	ase.writeShort(1); // la longueur du groupe de couleur, ici 1
	hex=pix.toString(16);
	while (hex.length < 6)
		hex="0" + hex;
	swatch.writeShort((hex="#" + hex).length + 1);// j'écris la longueur du texte à venir
	for (var n:int=0; n < hex.length; ++n)
		swatch.writeShort(hex.charCodeAt(n)); // J'écris le code caractère de chaque lettre
	swatch.writeShort(0); //ceci semble être une sorte de déclaration de fin
	swatch.writeUTFBytes("RGB "); // //on écrit le mode de couleur
	swatch.writeFloat((pix >> 16 & 0xFF) / 255); // on écrit la composante rouge
	swatch.writeFloat((pix >> 8 & 0xFF) / 255); // on écrit la composante verte
	swatch.writeFloat((pix & 0xFF) / 255); // on écrit la composante bleue
	swatch.writeShort(2); //on ecrit le type de couleur (ici 2=Normal)
	ase.writeInt(swatch.length); //on écrit dans le ByteArray de sortie la couleur.
	ase.writeBytes(swatch);
}
//je sauve ensuite mon ByteArray dans un fichier
var file:FileReference = new FileReference();
file.save(ase, "AdobeSwatchExchange.ase");

Et voila, ce n'est pas plus compliqué que ça.

Pas de vidéo cette fois, j'ai la flemme et vous avez compris le principe, non ?

A très bientôt pour de nouvelles aventures...