Documentation du code de SPIP et de ses plugins

Images

images_transforme.php

SPIP, Système de publication pour l'internet

Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James

Ce programme est un logiciel libre distribué sous licence GNU/GPL.

Table of Contents

Functions

image_oriente_selon_exif()  : string
Un filtre pour re-orienter automatiquement une image selon son exif - si besoin si pas d'exif ou pas d'orientation, le filtre ne fait rien et renvoie l'image d'origine
image_supprime_exif()  : string
Un filtre pour supprimer les infos exif - si besoin si pas d'exif, le filtre ne fait rien et renvoie l'image d'origine
image_aplatir()  : string
1/ Aplatir une image semi-transparente (supprimer couche alpha) en remplissant la transparence avec couleur choisir $coul.
image_format()  : string
Enregistrer une image dans un format donne (conserve la transparence gif, png, ico, webp,avif)
image_alpha()  : string
|image_alpha{63} Applique une transparence à l'image.
image_recadre()  : string
Recadre (rogne) une image en indiquant la taille de la découpe souhaitée
image_recadre_mini()  : string
Recadrer une image dans le rectangle le plus petit possible sans perte de pixels non transparent Par defaut le recadrage se fait en conservant le centre de l'image (recadre symétrique gauche vs droite et haut vs bas) mais en passant un second argument à false/non/all/mini on force un recadrage au plus juste de chaque côté
image_flip_vertical()  : string
Flip une image selon un axe de symétrie central et vertical (c'est donc un flip horizontal au sens de GD)
image_flip_horizontal()  : string
Flip une image selon un axe de symétrie central et horizontal (c'est donc un flip vertical au sens de GD)
image_masque()  : string
Passer, en plus de l'image d'origine, une image de "masque": un fichier PNG24 transparent.
image_nb()  : string
Passage de l'image en noir et blanc un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont ponderees pour obtenir le niveau de gris on peut ici regler cette ponderation en "pour mille"
image_flou()  : string
Calcul d'un flou sur une image.
dimensions_rotation_image()  : array<string|int, mixed>
Determiner les nouvelles dimensions de l'image apres rotation
image_rotation()  : string
permet de faire tourner une image d'un angle quelconque le flag "crop" permet de recadrer l'image pour conserver sa taille d'origine
image_imagick()  : string
Permet d'appliquer un filtre basé sur une méthode Imagick:: a une image par exemple: [(#LOGO_ARTICLE|image_imagick{waveImage,20,60})] Les arguments suivant le nom de la méthode sont ceux de la méthode
image_luminosite()  : string
Permet de rendre une image plus claire ($luminosite > 0 à 255) ou plus foncee ($luminosite < 0 à -255)
image_gamma()  : mixed
image_colorize()  : string
Corriger les composantes RGB d'une image Pour chaque argument : - une valeur de 0 à 255 permet d'augmenter la composante - une valeur de 0 à -255 permet de diminuer la composante
image_sepia()  : mixed|string
Passe l'image en "sepia" On peut fixer les valeurs RGB de la couleur "complementaire" pour forcer une dominante
image_renforcement()  : string
Renforcer la netteté d'une image
image_fond_transparent()  : mixed|null|string
Transforme la couleur de fond de l'image en transparence Le filtre ne gere pas la notion de contiguite aux bords, et affectera tous les pixels de l'image dans la couleur visee $background_color : couleur cible $tolerance : distance L1 dans l'espace RGB des couleur autour de la couleur $background_color pour lequel la transparence sera appliquee $alpha : transparence a appliquer pour les pixels de la couleur cibles avec la tolerance ci-dessus $coeff_lissage : coeff applique a la tolerance pour determiner la decroissance de la transparence fonction de la distance L1 entre la couleur du pixel et la couleur cible

Functions

image_oriente_selon_exif()

Un filtre pour re-orienter automatiquement une image selon son exif - si besoin si pas d'exif ou pas d'orientation, le filtre ne fait rien et renvoie l'image d'origine

image_oriente_selon_exif(string $src) : string
Parameters
$src : string
Return values
string

image_supprime_exif()

Un filtre pour supprimer les infos exif - si besoin si pas d'exif, le filtre ne fait rien et renvoie l'image d'origine

image_supprime_exif(string $src) : string
Parameters
$src : string
Return values
string

image_aplatir()

1/ Aplatir une image semi-transparente (supprimer couche alpha) en remplissant la transparence avec couleur choisir $coul.

image_aplatir(string $src[, string $format = 'jpg' ][, string $bg_color = '000000' ][, int|null $qualite = null ][, bool $transparence = false ]) : string

2/ Forcer le format de sauvegarde (jpg, png, gif, webp, avif...) pour les formats compresses jpg/webp/avif.., $qualite correspond au niveau de compression (defaut 85) pour le format gif, $qualite correspond au nombre de couleurs dans la palette (defaut 128) pour le format png, $qualite correspond au nombre de couleur dans la palette ou si 0 a une image truecolor (defaut truecolor) attention, seul 128 est supporte en l'etat (production d'images avec palette reduite pas satisfaisante) 3/ $transparence a "true" permet de conserver la transparence (utile pour conversion GIF)

Parameters
$src : string
$format : string = 'jpg'
$bg_color : string = '000000'
$qualite : int|null = null
$transparence : bool = false
Return values
string

image_format()

Enregistrer une image dans un format donne (conserve la transparence gif, png, ico, webp,avif)

image_format(string $src[, string $format = 'png' ][, string $bg_color = 'cccccc' ]) : string
Parameters
$src : string
$format : string = 'png'

format de l'image produite (gif, png, jpg, webp, avif..) png8 permet de demander un png en couleurs indexées

$bg_color : string = 'cccccc'

couleur de fond si la transparence ne peut être conservée

Return values
string

image_alpha()

|image_alpha{63} Applique une transparence à l'image.

image_alpha(string $src[, int $alpha = 63 ]) : string

alpha = 0: aucune transparence alpha = 127: completement transparent

Parameters
$src : string
$alpha : int = 63
Return values
string

image_recadre()

Recadre (rogne) une image en indiquant la taille de la découpe souhaitée

image_recadre(string $src, string|int $crop_width[, string|int $crop_height = '-' ][, string $position = 'center' ][, string $background_color = 'white' ]) : string

On peut indiquer une proportion ou une taille spécifique, une position de rognage et une couleur de fond, si le rognage est de taille plus grande que l'image d'origine.

Parameters
$src : string

Chemin de l'image ou balise html <img src=... />

$crop_width : string|int

Largeur du recadrage ou ratio sous la forme "16:9"

$crop_height : string|int = '-'

Hauteur du recadrage ou "+" (agrandir) ou "-" (reduire) si un ratio est fourni pour width

$position : string = 'center'

Indication de position de la découpe :

  • center, left, right, top, bottom,
  • ou combinaisons de plusiers top left
  • ou indication en pixels depuis une position top=50 ou composée top=40 left=50
  • ou nom d'une fonction spéciale qui calculera et retournera la position souhaitée
$background_color : string = 'white'

Couleur de fond si on agrandit l'image

Tags
example
  • [(#FICHIER|image_recadre{800, 400})]
  • [(#FICHIER|image_recadre{800, 400, center})]
  • [(#FICHIER|image_recadre{800, 400, center, black})]
  • [(#FICHIER|image_recadre{16:9})]
  • [(#FICHIER|image_recadre{16:9, -})] (- est appliqué par défaut, équivalent à image_passe_partout)
  • [(#FICHIER|image_recadre{16:9, +, center, white})]
  • [(#FICHIER|image_recadre{16:9, -, top left})]
  • [(#FICHIER|image_recadre{16:9, -, top=40 left=20})]
filtre
uses
_image_valeurs_trans()
uses
_image_tag_changer_taille()

si image trop grande pour être traitée

uses
_image_ecrire_tag()
link
https://www.spip.net/5786
Return values
string

balise image recadrée

image_recadre_mini()

Recadrer une image dans le rectangle le plus petit possible sans perte de pixels non transparent Par defaut le recadrage se fait en conservant le centre de l'image (recadre symétrique gauche vs droite et haut vs bas) mais en passant un second argument à false/non/all/mini on force un recadrage au plus juste de chaque côté

image_recadre_mini(string $src[, string|bool $keep_center = true ][, int $tolerance = 10 ]) : string

Le 3ème argument (de 0 à 255) permet de fixer la tolerance sur l'opacité (par défaut 10)

Parameters
$src : string
$keep_center : string|bool = true
$tolerance : int = 10
Return values
string

image_flip_vertical()

Flip une image selon un axe de symétrie central et vertical (c'est donc un flip horizontal au sens de GD)

image_flip_vertical(string $src) : string
Parameters
$src : string
Return values
string

image_flip_horizontal()

Flip une image selon un axe de symétrie central et horizontal (c'est donc un flip vertical au sens de GD)

image_flip_horizontal(string $src) : string
Parameters
$src : string
Return values
string

image_masque()

Passer, en plus de l'image d'origine, une image de "masque": un fichier PNG24 transparent.

image_masque(string $src, string $masque, mixed ...$args) : string

Le decoupage se fera selon la transparence du "masque", et les couleurs seront eclaircies/foncees selon de couleur du masque. Pour ne pas modifier la couleur, le masque doit etre en gris 50%.

Si l'image source est plus grande que le masque, alors cette image est reduite a la taille du masque. Sinon, c'est la taille de l'image source qui est utilisee.

$pos est une variable libre, qui permet de passer left=..., right=..., bottom=..., top=... dans ce cas, le masque est place a ces positions sur l'image d'origine, et evidemment cette image d'origine n'est pas redimensionnee

Positionnement horizontal: text-align=left, right, center Positionnement vertical : vertical-align=top, bottom, middle (les positionnements left, right, top, left sont relativement inutiles, mais coherence avec CSS)

Repeter le masque : repeat=repeat-x, repeat-y, repeat

Choix du mode de fusion: mode=masque, normal, eclaircir, obscurcir, produit, difference, ecran, superposer, lumiere_dure, teinte, saturation, valeur https://en.wikipedia.org/wiki/Blend_modes

  • masque: mode par defaut @uses _image_masque_pixel_mode_masque()
  • normal: place la nouvelle image par dessus l'ancienne @uses _image_masque_pixel_mode_normal()
  • eclaircir: place uniquement les points plus clairs @uses _image_masque_pixel_mode_eclaircir()
  • obscurcir: place uniquement les points plus foncés @uses _image_masque_pixel_mode_obscurcir()
  • produit: multiplie par le masque (points noirs rendent l'image noire, points blancs ne changent rien) @uses _image_masque_pixel_mode_produit()
  • difference: remplit avec l'ecart entre les couleurs d'origine et du masque @uses _image_masque_pixel_mode_difference()
  • ecran: effet inverse de 'produit' -> l'image resultante est plus claire @uses _image_masque_pixel_mode_ecran()
  • superposer: combine les modes 'produit' et 'ecran' -> les parties claires sont eclaircies, les parties sombres assombries. @uses _image_masque_pixel_mode_superposer()
  • lumiere_dure: equivalent a 'superposer', sauf que l'image du bas et du haut sont inversees. @uses _image_masque_pixel_mode_lumiere_dure()
  • teinte: utilise la teinte du masque @uses _image_masque_pixel_mode_teinte()
  • saturation: utilise la saturation du masque @uses _image_masque_pixel_mode_saturation()
  • valeur: utilise la valeur du masque @uses _image_masque_pixel_mode_valeur()

Il est possible d'ajouter son propre mode de fusion xxxx en déifinissant une fonction homonyme _image_masque_pixel_mode_xxxx()

Parameters
$src : string
$masque : string
$args : mixed
Return values
string

image_nb()

Passage de l'image en noir et blanc un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont ponderees pour obtenir le niveau de gris on peut ici regler cette ponderation en "pour mille"

image_nb(string $src[, int|null $val_r = null ][, int|null $val_g = null ][, int|null $val_b = null ]) : string

Par défaut, sans argument, on utilise le greyscale() par defaut de la lib graphique, beaucoup plus rapide Si on passe un seul argument auto [(#FICHIER|image_nb{auto}))] ce sont les pondérations automatiques utilisées, mais calculées précisemment pixel par pixel

Parameters
$src : string
$val_r : int|null = null
$val_g : int|null = null
$val_b : int|null = null
Return values
string

image_flou()

Calcul d'un flou sur une image.

image_flou(mixed $src[, int $niveau = 3 ]) : string

On utilise une matrice de convolution pour le niveau 1 et le niveau 2, qu'on repasse autant de fois que nécessaire pour arriver au niveau de flou souhaité qui est appriximativement le rayon du flou Le filtre préserve la transparence

Parameters
$src : mixed
$niveau : int = 3
Return values
string

dimensions_rotation_image()

Determiner les nouvelles dimensions de l'image apres rotation

dimensions_rotation_image(int|float $angle, int $width, int $height[, int $center_x = null ][, int $center_y = null ]) : array<string|int, mixed>
Parameters
$angle : int|float

en degres

$width : int
$height : int
$center_x : int = null
$center_y : int = null
Return values
array<string|int, mixed>

[int, int]

image_rotation()

permet de faire tourner une image d'un angle quelconque le flag "crop" permet de recadrer l'image pour conserver sa taille d'origine

image_rotation(string $src, float $angle[, bool $crop = false ]) : string
Parameters
$src : string
$angle : float
$crop : bool = false
Return values
string

image_imagick()

Permet d'appliquer un filtre basé sur une méthode Imagick:: a une image par exemple: [(#LOGO_ARTICLE|image_imagick{waveImage,20,60})] Les arguments suivant le nom de la méthode sont ceux de la méthode

image_imagick() : string

Liste des méthodes: https://www.php.net/manual/en/book.imagick.php

Tags
uses
_image_imagick_write()
Return values
string

image_luminosite()

Permet de rendre une image plus claire ($luminosite > 0 à 255) ou plus foncee ($luminosite < 0 à -255)

image_luminosite(string $src[, int $luminosite = 0 ]) : string

(Correspond en fait au filtre brightness de GD)

Parameters
$src : string
$luminosite : int = 0
Return values
string

image_colorize()

Corriger les composantes RGB d'une image Pour chaque argument : - une valeur de 0 à 255 permet d'augmenter la composante - une valeur de 0 à -255 permet de diminuer la composante

image_colorize(string $src[, int $red = 0 ][, int $green = 0 ][, int $blue = 0 ]) : string
Parameters
$src : string
$red : int = 0
$green : int = 0
$blue : int = 0
Return values
string

image_sepia()

Passe l'image en "sepia" On peut fixer les valeurs RGB de la couleur "complementaire" pour forcer une dominante

image_sepia(string $src[, string $sepia = '896f5e' ][, bool $legacy = false ]) : mixed|string

Par defaut, on utilise des fonctions rapides à base de colorize mais c'est une approximation avec un peu moins de piquant que la méthode de calcul pixel à pixel On peut retrouver le résultat plus précis de cette dernière en passant $legacy = true en argument, mais c'est beaucoup plus lent

Parameters
$src : string
$sepia : string = '896f5e'
$legacy : bool = false
Return values
mixed|string

image_renforcement()

Renforcer la netteté d'une image

image_renforcement(string $src[, float $k = 0.5 ]) : string
Parameters
$src : string

Code HTML de l'image

$k : float = 0.5

Niveau de renforcement (entre 0 et 1)

Return values
string

Code HTML de l'image

image_fond_transparent()

Transforme la couleur de fond de l'image en transparence Le filtre ne gere pas la notion de contiguite aux bords, et affectera tous les pixels de l'image dans la couleur visee $background_color : couleur cible $tolerance : distance L1 dans l'espace RGB des couleur autour de la couleur $background_color pour lequel la transparence sera appliquee $alpha : transparence a appliquer pour les pixels de la couleur cibles avec la tolerance ci-dessus $coeff_lissage : coeff applique a la tolerance pour determiner la decroissance de la transparence fonction de la distance L1 entre la couleur du pixel et la couleur cible

image_fond_transparent(string $src, string $bg_color[, int $tolerance = 12 ][, int $alpha = 127 ][, int $coeff_lissage = 7 ]) : mixed|null|string
Parameters
$src : string
$bg_color : string
$tolerance : int = 12
$alpha : int = 127

alpha = 0: aucune transparence alpha = 127: completement transparent

$coeff_lissage : int = 7
Return values
mixed|null|string

        
On this page

Search results