Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1531 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Equivalence filtre css et librairie GD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Equivalence filtre css et librairie GD

n°2307027
snike
Posté le 27-10-2017 à 09:57:24  profilanswer
 

Bonjour,


Message édité par snike le 27-10-2017 à 11:14:04
mood
Publicité
Posté le 27-10-2017 à 09:57:24  profilanswer
 

n°2307030
snike
Posté le 27-10-2017 à 11:13:39  profilanswer
 

Bonjour,
 
  Je cherche à générer des images via GD ç partir des filtres css du style :

Code :
  1. filter: sepia(0.5) hue-rotate(-30deg) saturate(1.2) contrast(0.8); // ig-1977


 
  Sauf erreur de ma part, il n'y a pas directement dans GD de filtre sepia, hue-rotate et saturate, j'ai donc trouvé des équivalences mais le résultat n'est pas le même.
 

Code :
  1. $nom_fichier='test.JPG';
  2.   $image = @imagecreatefromjpeg($nom_fichier);
  3.   sepia($image,0.5); // sepia(0.5)
  4.   imagehue($image, -30); // hue-rotate(-30deg)
  5.   imageSaturation($image, 20); // saturate(1.2)
  6.   imagefilter($image,IMG_FILTER_CONTRAST,190); //contrast(0.8)
  7.   imagejpeg($image,"toto.jpg" );
  8.   imagedestroy($image);
  9.   // filter: sepia(0.5) hue-rotate(-30deg) saturate(1.2) contrast(0.8);
  10. // Filtre Sépia
  11. // Source : http://php.net/manual/fr/function.imagefilter.php
  12. function sepia(&$image,$p) {
  13.   imagefilter($image,IMG_FILTER_GRAYSCALE,255*$p);
  14.  imagefilter($image,IMG_FILTER_BRIGHTNESS,(-30/255)*$p);
  15.  imagefilter($image,IMG_FILTER_COLORIZE, (90/255)*$p, (55/255)*$p, (30/255)*$p);
  16. }
  17. // Filtre hue-rotate
  18. // Source : https://stackoverflow.com/questions [...] gd-library
  19. function imagehue(&$image, $angle) {
  20.  if ($angle % 360 == 0) return;
  21.   $width = imagesx($image);
  22.   $height = imagesy($image);
  23.   for($x = 0; $x < $width; $x++) {
  24.   for($y = 0; $y < $height; $y++) {
  25.    $rgb = imagecolorat($image, $x, $y);
  26.    $r = ($rgb >> 16) & 0xFF;
  27.    $g = ($rgb >> 8) & 0xFF;
  28.    $b = $rgb & 0xFF;
  29.    $alpha = ($rgb & 0x7F000000) >> 24;
  30.    list($h, $s, $l) = rgb2hsl($r, $g, $b);
  31.    $h += $angle / 360;
  32.    if($h > 1) $h--;
  33.    list($r, $g, $b) = hsl2rgb($h, $s, $l);
  34.    imagesetpixel($image, $x, $y, imagecolorallocatealpha($image, $r, $g, $b, $alpha));
  35.   }
  36.  }
  37. }
  38. // Filtre saturate  
  39. function imageSaturation(&$image, $saturationPercentage) {
  40.  $width = imagesx($image);
  41.  $height = imagesy($image);
  42.  for($x = 0; $x < $width; $x++) {
  43.   for($y = 0; $y < $height; $y++) {
  44.    $rgb = imagecolorat($image, $x, $y);
  45.    $r = ($rgb >> 16) & 0xFF;
  46.    $g = ($rgb >> 8) & 0xFF;
  47.    $b = $rgb & 0xFF;
  48.    $alpha = ($rgb & 0x7F000000) >> 24;
  49.    list($h, $s, $l) = rgb2hsl($r, $g, $b);
  50.    $s = $s * (100 + $saturationPercentage ) /100;
  51.    if($s > 1) $s = 1;
  52.    list($r, $g, $b) = hsl2rgb($h, $s, $l);
  53.    imagesetpixel($image, $x, $y, imagecolorallocatealpha($image, $r, $g, $b, $alpha));
  54.   }
  55.  }
  56. }


 
Avez-vous des meilleurs scripts ?
 
Merci par avance.

n°2307033
snike
Posté le 27-10-2017 à 12:16:25  profilanswer
 

Bonjour,
 
  Il y a peut être une possibilité avec ImageMajick ?
 
Cordialement

n°2307094
MaybeEijOr​Not
but someone at least
Posté le 29-10-2017 à 12:05:07  profilanswer
 

Bonjour,

 

Les matrices de transformation sont disponibles dans les specs du css (sépia, hue-rotate et saturation) :
https://www.w3.org/TR/filter-effect [...] rixElement
https://www.w3.org/TR/filter-effects-1/#sepiaEquivalent
https://www.w3.org/TR/filter-effect [...] Equivalent
https://www.w3.org/TR/filter-effect [...] Equivalent

 

Et pour le contraste :
https://www.w3.org/TR/filter-effect [...] ferElement
https://www.w3.org/TR/filter-effect [...] Equivalent

 


Il faut bien comprendre que ces effets sont subjectifs, à chacun de les définir.


Message édité par MaybeEijOrNot le 29-10-2017 à 12:06:10

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2307107
snike
Posté le 29-10-2017 à 14:50:16  profilanswer
 

Bonjour,
 
  Merci.
  Quel est le lien entre ces matrices et la librairie GD ?
  Il y a une fonction imageconvolution mais la matrice est 3x3.
 
Cordialement

n°2307109
MaybeEijOr​Not
but someone at least
Posté le 29-10-2017 à 16:40:46  profilanswer
 

Aucun lien (direct) avec la librairie GD, simplement comme les effets sont au bon vouloir de chacun il est possible que tu ne trouves aucun script faisant pareil que CSS. Du coup je te donne de quoi comparer ou les bonnes bases si tu souhaites coder toi-même ces effets, ce qui est faisable avec GD a priori.


Message édité par MaybeEijOrNot le 29-10-2017 à 16:41:42

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2307113
snike
Posté le 29-10-2017 à 18:20:41  profilanswer
 

Ok, merci pour tes renseignements, je vais voir comment faire.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Equivalence filtre css et librairie GD

 

Sujets relatifs
Filtre en fonctions de critères inconnusAppeler DllMain d'une librairie dans une application console Windows
filtre avec REGEX[RESOLU] VBA - Tag d'1 var bidimensionnelle sur 1 librairie SharePoint
Problème utilisation librairie externeSélectionner en automatique les lignes d'un résultat d'un filtre
recherche librairie pour créer un requeteur pour utilisateur finalSous total avec 2 filtre.
filtre angular Filtre de PowerPoint à excel fonctionne pas e mode diaporama
Plus de sujets relatifs à : Equivalence filtre css et librairie GD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR