PROJET AUTOBLOG


Warrior du Dimanche

Site original : Warrior du Dimanche

⇐ retour index

PHP - Notes perso sur Imagick, un résumé de pourquoi je vire GD à coups de pompes dans l'oignon.

vendredi 15 septembre 2023 à 15:23

Allez, pour une fois, j'ai un peu de temps devant moi, je vais éplucher un peu la lib Image magick dont je parlais il n'y à guère...

La base

charger UNE image

Simple: pas besoin de plusieurs fonctions selon le format, il suffit de $images = new Imagick('image.jpg');

charger DES images (et là c'est fort)

Même pas nécessaire de passer par un foreach, on fournit le tableau des fichiers voire directement un glob: $images = new Imagick(glob('images/*.JPG'));

Sauver une image

$im->writeImage('image.jpg');

Faire une miniature

Si on laisse une dimension à 0, les proportions sont conservées (quand tu vois la merde que c'est avec GD !) $image->thumbnailImage(100, 0);

Output une image

header('Content-type: image/jpeg');
$image = new Imagick('image.jpg');
# ici on effectue un traitement puis on sort le résultat
echo $image;

Récupération d'infos sur les images

création d'une nouvelle image

$im->NewImage(largeur,hauteur,couleur de fond);

création d'une couleur

Comme pour GD, il faut créer un objet couleur dans les traitements d'image, mais c'est plus simple qu'avec GD (et plus complet): il suffit de passer une couleur selon les normes CSS. Du coup, la transparence n'est pas gérée par une connerie de paramètre «alpha» mais simplement par ... rgba()... 💖

$couleur=new ImagickPixel("white");
$couleur=new ImagickPixel("#FFF");
$couleur=new ImagickPixel('rgb(255,255,200)');
$couleur=new ImagickPixel('rgba(255,255,200,0.5)');

🆒 ⮕ Ça peut paraître compliqué, mais en fait, dans les fonctions où on est sensé utiliser ImagickPixel, je me suis aperçu qu'on pouvait tout simplement passer une string contenant la couleur css... elles se démerdent seules. 😍

Traitements

Ajouts

Modification de couleurs

Modification de taille et d'orientation

Modifications de qualité

Modification d'aspect et déformations

interactions d'images

# Conclusion Image Magick me semble particulièrement bien nommée tant les possibilités sont énormes et la simplicité d'utilisation étonnante: on sent une volonté de se simplifier la vie lors de l'utilisation... c'est juste beau.

Je voulais mettre une image de chaque effet dans les descriptions mais:

  1. ça prenait une place de ouf
  2. je préfère reprendre certaines de mes applis/api avec imagick
  3. j'ai plus le temps, les autres arrivent
  4. j'ai la flemme.
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

PHP: ImageMagick - Manual

jeudi 14 septembre 2023 à 08:07

Pour un de mes futurs projets, j'avais besoin d'un nouveau microservice d'avatars...

J'avais déjà fait un générateur d'avatars pixelisés il y a longtemps mais là, il me faudrait un service qui superpose divers «calques» pour générer un avatar en fonction du nom de la personne.

BREF...

Je me suis lancé, comme d'hab', en réutilisant une classe simplifiant l'usage de la lib GD en PHP.

C'était souple et simple mais le résultat restait assez décevant parce que je ne parvenais pas à gérer correctement la transparence des PNG: GD ne prenait en compte qu'une seule couleur transparente et on se retrouve avec un GIF like en qualité potato...

Après avoir cherché, lutté, testé des trucs, modifié ma classe... le ratio temps demandé/résultat obtenu m'a poussé à me dire : «stop, il doit y avoir un moyen plus simple»

Ben vous savez quoi ? Il y a. Oui.

Ma classe était déjà vraiment pas mal car elle permettait de faire les choses simplement... Mais, juste pour tester, j'ai essayé ImageMagick.

OMFGPHP
1 1 1

Reprendre mon code pour utiliser cette lib m'a pris un gros quart d'heure et cinq fois moins de code. Et ça a marché. Propre. Du premier coup.

Conclusion

🟢 rapide

🟢 simple d'utilisation (5 minutes pour piger les bases)

🟢 efficace

🟢 code ultra lisible et compact à la fin

🟢 se suffit à elle-même et gère seule les trucs chiants

OMFGPHP2
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

«Starfield», plan-plan sur la comète  – Libération

mardi 12 septembre 2023 à 13:20

Assez d'accord avec le passage cité par @sammy

Surtout Bethesda se prend les pieds dans son monde ouvert. L’échelle tant mise en avant se trouve saucissonnée en petites poches quasi étanches qui sapent le sentiment d’exploration si précieux dans leurs jeux. De toute façon, la plupart des planètes, au contenu généré aléatoirement, n’offre rien d’autre que des ressources à collecter et une infinité de jobards à tabasser dans des complexes militaro-industriels répétés à l’infini. Et si l’on peut personnaliser son vaisseau de pied en cap, on n’aura pas grand-chose à faire dedans. Pour sa première création originale en vingt-cinq ans, Bethesda livre une odyssée spatiale si chétive et étriquée qu’elle interroge sur la capacité du studio à se renouveler.

Au bout du compte, on a l'impression d'un jeu prétentieux :

Je pense que le jeu a été survendu, à tort annoncé comme révolutionnaire par certains: hélas, les mécaniques de Skyrim/Oblivion/Morrowind étaient suffisantes pour l'époque et on les aimait malgré leurs éventuelles imperfections.

Cette indulgence ne peut plus être autant de mise dix ans après Skyrim... Surtout après avoir autant attendu un jeu à cause duquel Bethesda n'a pas travaillé sur ES6... (et ÇA c'est grave !)

Via https://www.sammyfisherjr.net/Shaarli/
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

Bun 1.0 | Bun Blog

lundi 11 septembre 2023 à 13:31
Capture du 2023-09-11 13-30-34.png
Via https://links.kalvn.net/shaare/idG5_Q
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

RIDITLETEUR-Réflexions sur l'Abaya : Un point de vue d'un Tunisien : r/france

samedi 9 septembre 2023 à 07:28

J'ai retrouvé le post Reddit d'origine de ce texte copié collé sur la river et que l'on peut rapprocher de la vidéo de Kahina Balhoul (femme Imam) , trouvée sur masto (https://piaille.fr/@petaramesh/111000388869533671 ) https://www.youtube.com/watch?v=aBZpiAyifr0

Les deux opinions me paraissent intéressantes car proposées par des gens concernés et légitimes: ils savent de quoi ils parlent et ne peuvent être soupçonnés d'être antimusulman...

En effet, j'ai souvent l'impression qu'on est arrivé à une telle radicalisation des positions à ce sujet qu'il ne peut plus y avoir de réflexion un peu objective sans qu'on soit immédiatement noyé dans un brouhaha d'accusations... Pourtant, le sujet n'est pas simple à trancher ou à résoudre...

En tant que Tunisien, je tiens à souligner que le mot "Abaya" est totalement étranger à notre culture en Tunisie (et au Maghreb tout entier à ce que je sache). Ce vêtement, l'abaya, est spécifique à l'Arabie Saoudite et au pays du Golf et reflète l'influence du wahhabisme et de l'islamisme radical en France. En tant que Tunisien, j'ai une compréhension approfondie des aspects religieux et historiques de l'islam, et je peux affirmer avec certitude que nos ancêtres n'ont jamais porté ce type de vêtement, et encore moins le voile.

Le port du voile est devenu une question politique, notamment grâce aux Frères musulmans, qui ont promu cette pratique. Il est intéressant de noter que même à Al-Azhar en Égypte, une institution enseignant la théologie musulmane, les étudiantes ne portaient pas de voile dans les années 60 et avant. Le voile est donc une tendance relativement récente, propagée à travers les médias depuis la défaite de 1967 et l'essor de l'islamisme, consécutif au déclin du nationalisme arabe laïque et l'enrichissement des pays du Golf.

Il est important de noter que le Maghreb n'avait aucune tradition de voile ou d'abaya avant ces événements. Il est donc regrettable de voir que certains Maghrébins islamistes (y en a aucune doute pour moi) utilisent ces vêtements saoudiens, qui n'ont aucun lien avec notre culture, pour exprimer leurs opinions politiques en France. Cette stratégie est superficielle et déplorable, car elle utilise les enfants comme instruments politiques.

En ce qui concerne la France, il est évident que les gouvernements incompétents, comme beaucoup de l'élite politique mondiale aujourd'hui, tentent de diviser pour mieux régner. Ces questions détournent l'attention des problèmes réels en France. Nous avons des liens historiques étroits avec la France et nous savons qu'elle fait face à de véritables défis (comme les coups d'État en Afrique, qui sont un symptôme réel, la réforme des retraites on n'en parle plus..je veux pas parler d'autres points la pour ne pas m'accuser de se mêler de la politique interne de la France même si j'y réside mais bon..je veux que l'idée soit claire).

Il est triste de constater que la plupart des gens tombent facilement dans ce piège, ce qui pourrait conduire à des divisions internes et à des conflits. Malheureusement, comprendre ces problèmes nécessite un effort d'étude de l'histoire et des enjeux complexes. La montée de l'islamisme est liée au pétrole du Golfe, et il est important de rappeler que l'islam est une religion vieille de 1500 ans, la tendance habit islamique ça date de 1967..La révolution islamique en Iran à rendu les choses encore pire. Le judaïsme et le christianisme ont évolué au fil du temps pour s'adapter à la laïcité, et c'est le résultat d'années de luttes acharnées en France contre le clergé pour séparer l'église de l'état et garantir la liberté de conscience, et ceci est en rapport étroit avec la devise nationale liberté égalité fraternité. C'est un pilier de la république. Malheureusement la plupart des immigrés ne connaissaient pas l'histoire de ce pays, je connais même des français qui ne connaissent pas cette Histoire. La laïcité en France c'est le fruit de luttes historiques. Quant à l'islam, il n'a pas encore connu cette transformation, en grande partie en raison de la légitimité que certains dirigeants moyenâgeux tirent de la religion pour maintenir leur pouvoir (Iran, Arabie Saoudite...).

Ces dirigeants financent des mouvements radicaux et des mosquées en France pour propager une vision extrémiste de l'islam. De plus, certaines puissances mondiales continuent de soutenir ces régimes moyenâgeux en raison de leurs intérêts pétroliers. Tant que la situation au Moyen-Orient ne changera pas, les tensions en France risquent de perdurer, et les gouvernements incompétents en tiront toujours profite.

https://www.reddit.com/r/france/comments/16cujs0/r%C3%A9flexions_sur_labaya_un_point_de_vue_dun_tunisien/

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires