commit 1519dfd2be47e3c6a26af4e96bfaba55f8773d57 Author: jluc@no-log.org <> Date: Tue Oct 1 11:56:04 2019 +0000 on passe creer_sprite_css en sous dossier v1.3 (reste stable) et on crée un trunk (en dev) pour corriger et améliorer diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b4e41ed --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto !eol +/creer_sprites_fonctions.php -text +/paquet.xml -text diff --git a/creer_sprites_fonctions.php b/creer_sprites_fonctions.php new file mode 100644 index 0000000..60bb5b8 --- /dev/null +++ b/creer_sprites_fonctions.php @@ -0,0 +1,134 @@ + + if (@file_exists($img)) $src = $img; + else { + $src = extraire_attribut($img, "src"); + $src = preg_replace(",\?[0-9]*$,", "", $src); + // Si pas de fichier, ignorer + if (!@file_exists($src)) return; + } + + + $GLOBALS["sprites"]["$nom"]["fichiers"][] = $src; + + $largeur = largeur($img); + $hauteur = hauteur($img); + + if ($largeur > $GLOBALS["sprites"]["$nom"]["largeur"]) $GLOBALS["sprites"]["$nom"]["largeur"] = $largeur; + $hauteur_old = max(0, $GLOBALS["sprites"]["$nom"]["hauteur"]); + $GLOBALS["sprites"]["$nom"]["hauteur"] += $hauteur; + + $alt = extraire_attribut($img, "alt"); + $class = extraire_attribut($img, "class"); + $fichier = sous_repertoire(_DIR_VAR, 'cache-sprites').$nom; + //$fichier .= "?m=spiprempdate[$fichier]"; + + $date_src = @filemtime($src); + if ($date_src > $GLOBALS["sprites"]["$nom"]["date"]) $GLOBALS["sprites"]["$nom"]["date"] = $date_src; + + return "$alt"; +} + +function creer_sprites_terminaison_fichier_image($fichier) { + if (preg_match(",^(?>.*)(?<=\.(gif|jpg|png)),", $fichier, $regs)) { + $terminaison = $regs[1]; + return $terminaison; + } else { + return false; + } + +} + +function creer_sprites($flux) { + $sprites = $GLOBALS["sprites"]; + $page = $flux['data']['texte']; + if ($sprites) { + foreach($sprites as $key => $sprite) { + $fichier = sous_repertoire(_DIR_VAR, 'cache-sprites').$key; + + + $date_max = $sprite["date"]; + $date_src = @filemtime($fichier); + $largeur = $sprite["largeur"]; + $hauteur = $sprite["hauteur"]; + + $creer = false; + if ($date_src < $date_max) $creer = true; + if ($largeur != largeur($fichier) || $hauteur != hauteur ($fichier)) $creer = true; + + if (in_array($_GET['var_mode'], array('recalcul', 'debug'))) $creer = true; + + if ($creer) { + + include_spip('inc/filtres_images'); + + $im = imagecreatetruecolor($largeur, $hauteur); + imagepalettetotruecolor($im); + @imagealphablending($im, false); + @imagesavealpha($im,true); + $color_t = imagecolorallocatealpha( $im, 0, 0, 0 , 127 ); + imagefill ($im, 0, 0, $color_t); + + $y_total = 0; + foreach($sprite["fichiers"] as $img) { + + $f = "imagecreatefrom".str_replace("jpg","jpeg",creer_sprites_terminaison_fichier_image($img)); + $im_ = $f($img); + @imagepalettetotruecolor($im_); + + $x = imagesx($im_); + $y = imagesy($im_); + + + @ImageCopy($im, $im_, 0, $y_total, 0, 0, $x, $y); + $y_total += $y; + } + + $nom_fichier = substr($fichier, 0, strlen($fichier) - 4); + _image_imagepng($im, "$nom_fichier.png"); + $f = creer_sprites_terminaison_fichier_image($fichier); + if ($f != "png") { + $new = extraire_attribut( image_aplatir("$nom_fichier.png", $f, "ffffff"), "src"); + @copy($new, $fichier); + + } + + imagedestroy($im); + imagedestroy($im_); + + } + + } + } + + // Mettre les dates des fichiers en variable de chaque appel + $page = preg_replace_callback(",spiprempdate\[([^\]]*)\],", "creer_sprites_remplacer_date", $page); + + $flux["data"]['texte'] = $page; + $GLOBALS["sprites"] = false; + return $flux; +} + + +function creer_sprites_remplacer_date($regs) { + $fichier = $regs[1]; + + if ($date_fichier["$fichier"] > 0) { + return $date_fichier["$fichier"]; + } + else { + $date_fichier["$fichier"] = @filemtime($fichier); + return $date_fichier["$fichier"]; + } +} + +function creer_sprites_recuperer_fond ($flux) { + return creer_sprites($flux); + +} diff --git a/paquet.xml b/paquet.xml new file mode 100644 index 0000000..6c6507a --- /dev/null +++ b/paquet.xml @@ -0,0 +1,17 @@ + + + Créer sprites CSS + + ARNO* + GPL + + + +s