Changeset 41545 in spip-zone


Ignore:
Timestamp:
Oct 5, 2010, 11:05:07 PM (9 years ago)
Author:
renato@…
Message:

le filtre c'adapte a le noveau nom de pipeline;
c'est encore lourde, car il ne prende pas en compte le donnee "creer".

Location:
_plugins_/animated_gif
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/animated_gif/animated_GIF_pipelines.php

    r41430 r41545  
    11<?php
    22
    3 function animatedGIF__image_valeurs_trans($ret) {
     3function animatedGIF_image_preparer_filtre($ret) {
     4  $args = $ret["args"];
     5  if($args["effet"]=="gif_split")
     6    return $ret;
     7 
    48  $data = $ret["data"];
    59 
     
    812  if($data["format_source"]!="gif" || !is_animated_gif($data["fichier"],$gifdata))
    913    return $ret;
    10 
    11   //se si splitta sorgente in vari frames ed elaborali
    12   include_once("GIFDecoder.class.php");
    13   $gifDecoder = new GIFDecoder($gifdata);
    14 
    15         $i = 1;
    16         $gifArray = $gifDecoder->GIFGetFrames();
    17         $fichier_orig = $data["fichier"];
    18 
    19         $destArray = array();
    20   foreach ($gifArray as $frame) {
    21     if ($i<10) {
    22                         $fichierframe = $fichier_orig."frame0$i.gif";
    23                 }
    24                 else {
    25                         $fichierframe = $fichier_orig."frame$i.gif";
    26                 }
    27                 if(!@file_exists($fichierframe))
    28       fwrite(fopen($fichierframe, "wb"), $frame);
    29     $i++;
    30     $img = preg_replace("/(src=[\"'])([^\"']*)([\"'])/",'$1'.$fichierframe.'$3',$data["tag"]);
    31    
    32     $args = $data["reconstruction"];
    33     $image_args = $args[1];
    34     array_shift($image_args);
    35     $args[1] = $img;
    36     $args = array_merge($args,$image_args);
    37    
    38     $destArray[] = extraire_attribut(image_graver(filtrer("image_format",call_user_func_array("filtrer",$args),"gif")),"src");
    39   }
    4014 
    41   //riunisci gif
    42   include_once("GIFEncoder.class.php");
    43   $animatedgif = new GIFEncoder(
    44     $destArray,
    45     $gifDecoder->GIFGetDelays(),
    46     $gifDecoder->GIFGetLoop(),
    47     $gifDecoder->GIFGetDisposal(),
    48     $gifDecoder->GIFGetTransparentR(),
    49     $gifDecoder->GIFGetTransparentG(),
    50     $gifDecoder->GIFGetTransparentB(),
    51     "url"
    52   );
    53   //cancello immagini intermedie
    54   foreach($destArray as $frame) {
    55     @spip_unlink($frame);
    56   }
    57 
    58   //salvo immagine finale
    59   $data["fichier_dest"] = preg_replace("/".$data["format_dest"]."$/","gif",$data["fichier_dest"]);
    60   $data["tag"] = preg_replace("/".$data["format_dest"]."$/","gif",$data["tag"]);
    61   ecrire_fichier($data["fichier_dest"],$animatedgif->GetAnimation(),true); 
     15  $animData = image_gif_animData($args["img"]);
     16 
     17  $args["fonction_creation"][1][0] = filtrer("image_gif_split",$args["fonction_creation"][1][0]);
     18 
     19  $params = array_merge(array($args["fonction_creation"][0]),$args["fonction_creation"][1]);
     20 
     21  $data["fichier_dest"] = extraire_attribut(image_gif_join(call_user_func_array("filtrer",$params),$animData),"src");
     22  $data["tag"] = _image_ecrire_tag($data,array("src" => $data["fichier_dest"]));
    6223 
    6324  $data["creer"] = false;
     25  $ret["args"] = $args;
    6426  $ret["data"] = $data;
    6527  return $ret;
    6628}
    67 
    68 function is_animated_gif( $filename, &$raw )
    69 {
    70   $raw = file_get_contents( $filename );
    71 
    72   $offset = 0;
    73   $frames = 0;
    74   while ($frames < 2) {
    75     $where1 = strpos($raw, "\x00\x21\xF9\x04", $offset);
    76     if ( $where1 === false ) {
    77       break;
    78     } else {
    79       $offset = $where1 + 1;
    80       $where2 = strpos( $raw, "\x00\x2C", $offset );
    81       if ( $where2 === false ) {
    82         break;
    83       } else {
    84         if ( $where1 + 8 == $where2 ) {
    85           $frames ++;
    86         }
    87         $offset = $where2 + 1;
    88       }
    89     }
    90   }
    91 
    92   return $frames > 1;
    93 }
  • _plugins_/animated_gif/plugin.xml

    r41430 r41545  
    2525    animatedGIF
    2626    </prefix>
     27    <fonctions>
     28      animated_GIF_fonctions.php
     29    </fonctions>
    2730    <pipeline>
    28       <nom>_image_valeurs_trans</nom>
     31      <nom>image_preparer_filtre</nom>
    2932      <inclure>animated_GIF_pipelines.php</inclure>
    3033    </pipeline>
Note: See TracChangeset for help on using the changeset viewer.