version 0.7.0 : nouveau filtre image_tramer

pour tramer une image, de préféence en niveaux de gris, à la LOW←TECH MAGAZINE
svn/root/tags/v0.7.1
bruno@eliaz.fr 4 years ago
parent b39cd17625
commit 898cf41ab0

@ -17,7 +17,7 @@
<li class="menu__item"><a href="[(#ENV{filtres}|=={couleurs}|ou{#ENV{filtres}|=={''}}|?{##VALEUR,#SELF|parametre_url{filtres,couleurs}|ancre_url{#VALEUR}})]" class="ajax">#VALEUR</a></li>
</BOUCLE_menu_couleurs>
<li class="menu__item menu__item_header">Traitement des images</li>
<BOUCLE_menu_images(DATA){liste image_saturer,image_niveaux_gris_auto,image_courbe,image_float,image_contour_alpha,image_sincity,image_estampage_alpha,image_merge,image_negatif}>
<BOUCLE_menu_images(DATA){liste image_saturer,image_niveaux_gris_auto,image_courbe,image_float,image_contour_alpha,image_sincity,image_estampage_alpha,image_merge,image_negatif,image_tramer}>
<li class="menu__item"><a href="[(#ENV{filtres}|=={images}|?{##VALEUR,#SELF|parametre_url{filtres,images}|ancre_url{#VALEUR}})]" class="ajax">#VALEUR</a></li>
</BOUCLE_menu_images>
</ul>

@ -299,3 +299,41 @@
<div class="apercu__item"><p>image_negatif</p>[(#GET{img}|image_negatif)]</div>
</div>
</div>
<!-- image_tramer -->
<div class="boite" id="image_tramer">
<h2 class="boite__titre">image_tramer</h2>
<p>
Tramer une image (en mode niveaux de gris) à la <a href="https://github.com/lowtechmag/solar/wiki/Solar-Web-Design#dithered-images">LOW←TECH MAGAZINE</a>
</p>
<dl class="codeblock">
<dt>Syntaxe</dt>
<dd><code>image_tramer{url_image, 6, o8x8}</code></dd>
<dt>Paramètre 1</dt>
<dd>Url de l'image servant de filtre</dd>
<dt>Paramètre 2</dt>
<dd>Nombre : niveaux de couleurs à utiliser</dd>
<dt>Paramètre 3</dt>
<dd>Booléen : générer une image en couleurs</dd>
<dt>Exemple</dt>
<dd><code class="Exemple">#VAL{"\[\(#CHEMIN{images/ecureuil.jpg}|image_tramer\)\]"}</code></dd>
</dl>
<div class="apercu apercu_images">
<div class="apercu__item alpha on bordure"><p>originale</p>[(#CHEMIN{images/ecureuil.jpg}|balise_img)]</div>
<BOUCLE_imgtramer1(DATA){liste 3,6,11}>
<div class="apercu__item"><p>#VALEUR</p>[(#CHEMIN{images/ecureuil.jpg}|image_tramer{#VALEUR})]</div>
</BOUCLE_imgtramer1>
</div>
<div class="apercu apercu_images">
<div class="apercu__item alpha on bordure"><p>originale</p>[(#CHEMIN{images/ecureuil.jpg}|balise_img)]</div>
<BOUCLE_imgtramer2(DATA){liste checks,o8x8,h8x8a,h16x16o,c5x5b,c5x5w,c6x6b,c6x6w,c7x7b,c7x7w}>
<div class="apercu__item"><p>6,#VALEUR</p>[(#CHEMIN{images/ecureuil.jpg}|image_tramer{6,#VALEUR})]</div>
</BOUCLE_imgtramer2>
</div>
<div class="apercu apercu_images">
<div class="apercu__item alpha on bordure"><p>originale</p>[(#CHEMIN{images/ecureuil.jpg}|balise_img)]</div>
<BOUCLE_imgtramer3(DATA){liste 3,6,11}>
<div class="apercu__item"><p>#VALEUR,o8x8,oui</p>[(#CHEMIN{images/ecureuil.jpg}|image_tramer{#VALEUR,o8x8,oui})]</div>
</BOUCLE_imgtramer3>
</div>
</div>

@ -1193,4 +1193,48 @@ function image_merge($im, $masque, $h='left', $v='top'){
}
return _image_ecrire_tag($image,array('src'=>$dest));
}
/**
* Tramer une image avec la fonction orderedPosterizeImage d'Imagick
* Inspiré de https://github.com/lowtechmag/solar/wiki/Solar-Web-Design#dithered-images
*
* @param string $im
* Chemin de l'image ou balise html `<img src=... />`
* @param int $levels
* Le nombre de niveaux de couleurs à utiliser
* @param string $thmap
* Le nom de la carte de seuils de dither cf http://www.imagemagick.org/Usage/quantize/tmaps_list.txt
* @param boolean $color
* Générer une image en couleurs
* @return string balise image
*/
function image_tramer($img, $levels = 6, $thmap = 'o8x8', $color = false){
$cache = _image_valeurs_trans($img, "tramer-".json_encode(array($thmap, $levels, $color)), 'png');
if (!$cache) {
return false;
}
// facile !
if ($cache['format_source'] === 'svg'){
return $img;
}
$fichier = $cache["fichier"];
$dest = $cache["fichier_dest"];
$creer = $cache["creer"];
if ($creer) {
if (method_exists('Imagick', 'orderedPosterizeImage')) {
$imagick = new Imagick();
$imagick->readImage($fichier);
if (!$color) {
$imagick->setImageType(Imagick::IMGTYPE_GRAYSCALE);
}
$imagick->orderedPosterizeImage($thmap.','.$levels);
$imagick->setImageFormat('png');
$imagick->writeImage($dest);
}
}
return _image_ecrire_tag($cache, array('src' => $dest));
}

@ -21,6 +21,7 @@ if(is_array($GLOBALS['spip_matrice'])){
$GLOBALS['spip_matrice']['image_negatif'] = 'filtres/images_complements.php';
$GLOBALS['spip_matrice']['image_monochrome'] = 'filtres/images_complements.php';
$GLOBALS['spip_matrice']['image_merge'] = 'filtres/images_complements.php';
$GLOBALS['spip_matrice']['image_tramer'] = 'filtres/images_complements.php';
$GLOBALS['spip_matrice']['couleur_chroma'] = 'filtres/couleurs_complements.php';
$GLOBALS['spip_matrice']['couleur_saturer'] = 'filtres/couleurs_complements.php';

@ -1,7 +1,7 @@
<paquet
prefix="fonctions_images"
categorie="multimedia"
version="0.6.15"
version="0.7.0"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="prive/themes/spip/images/fonctions_images_48.png"

Loading…
Cancel
Save