2011-07-01 3 views
0

Je fonde ce hors the official PSD File Format documentationLa lecture d'une couche comprimée RLE-de Photoshop (PSD) Fichier

Je peux lire des données brutes très bien, et aucun de mes fichiers ont une compression ZIP. Tout ce dont j'ai besoin, c'est de faire fonctionner les trucs de RLE.

À l'heure actuelle, la décompression de l'information ne m'intéresse pas. Je veux juste le lire et le stocker en mémoire sous sa forme compressée. Je traiterai de la décompression plus tard. Tout ce que je fais est de calculer la taille des données RLE, et de les lire en gros, canal par canal. Ceci est la fonction que je utilise pour calculer la taille des données de canal:

écrit dans ActionScript 3,0

//////////////////////////////////////////////////////////////////// 
// Compute RLE Data Size 
//////////////////////////////////////////////////////////////////// 
protected function _computeRLESize(data_ : ByteArray, record_ : PSDLayerRecord) : int 
{ 
    var numScanlines : int; 
    var ii : int; 
    var size : int; 
    var totalSize : int; 
    var pad : int; 

    // Compute our total time 
    totalSize = (record_.bottom - record_.top) * (record_.right - record_.left); 

    // Find our number of scanlines 
    numScanlines = record_.bottom - record_.top; 

    // Initialize our size 
    size = 0; 

    // Loop through each line to see how many bytes we have 
    trace("Num Scanlines: " + numScanlines); 
    for (ii = 0; ii < numScanlines; ii++) 
    { 
     pad = data_.readShort(); 
     if (pad % 2 != 0) pad++; 
     size += pad; 
    } 

    // Output our compression 
    trace("Image is at " + size + "/" + totalSize + " compression"); 

    // When we're done, back up to the beginning so we can read it 
    data_.position -= numScanlines * 2; 

    // Return our size 
    return size + numScanlines * 2; 
} 

J'ai eu quatre autres professionnels étudient les codeurs de ce code ainsi que la documentation officielle , et aucun d'entre eux ne pouvait trouver quelque chose de mal avec cela.

Merci pour toute aide.

Répondre

0

Voulez-vous simplement connaître la taille des données de pixel de canal (en ce qui concerne la compression RLE ou RAW)? Vous pouvez obtenir la taille à partir des informations sur les canaux dans l'enregistrement de calque.

Questions connexes