Existe-t-il un moyen d'obtenir la fonction imagefilledarc()
's de GD en utilisant PHP ImageMagick? J'ai regardé autour mais n'ai pas trouvé une solution satisfaisante jusqu'ici. Je veux qu'il supporte la transparence, et l'utilise pour dessiner des tartes.Dessiner des tartes en utilisant PHP ImageMagick
Répondre
Depuis ce poste est touché par Googlers chaque maintenant et puis, et ne dispose pas d'une réponse valable, je me suis dit que je devrais g quelques indices. Il existe une excellente bibliothèque appelée Imagine (https://github.com/avalanche123/Imagine) qui supporte les bibliothèques d'images PHP les plus populaires (ImageMagick, GraphicsMagick et GD) en utilisant les mêmes appels. L'API comprend une fonction pieSlice (http://imagine.readthedocs.org/en/latest/api/Draw/drawer_interface.html#Imagine\Draw\DrawerInterface::pieSlice). La source de cette fonction est https://github.com/avalanche123/Imagine/blob/develop/lib/Imagine/Imagick/Drawer.php#L219
Votre meilleur pari serait d'utiliser ImageMagick :: Draw. Il a une commande d'arc; Au lieu de spécifier le centre, vous spécifiez le rectangle englobant. Vous avez juste besoin d'ajouter une commande avant de définir le remplissage, et peut-être après pour fermer le remplissage.
Pour autant que je sais ImagickDraw :: arc est la seule façon de le faire (sauf si vous voulez créer une fonction qui dessine pixel par pixel). Mais pour le faire fonctionner de la même manière que gd, il suffit de faire des changements mineurs. Par exemple, ceci:
imagearc($image, $cx, $cy, $width, $height, $start, $end, $color);
devrait être équivalent à cela (je ne l'ai pas testé):
ImagickDraw::setStrokeColor($imageMagickColor); //I don't remember how to allocate the color
ImagickDraw::arc($cx-$width/2, $cy-$height/2, $cx+$width/2, $cy+$height/2, $start, $end);
Pas exactement ce que vous demandez, mais il est facile de dessiner des graphiques circulaires avec Google Chart API http://code.google.com/apis/chart/
Ce n'est pas ce que je veux. Mais merci quand même. – runfalk
Cela ne fonctionne pas de la même manière. Cette commande fait essentiellement une ellipse dans la boîte de délimitation, coupe à une ligne entre les degrés donnés et supprime l'une des pièces. – runfalk