-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ajoute la possibilité d'utiliser des images SVG dans un tutoriel #2430
Conversation
|
\o/ je sens que j'aime cette PR ! |
ext = filename.split(".")[-1].lower() | ||
if ext == "svg": | ||
cairosvg.svg2png(url=down_path, | ||
write_to=os.path.join(pt, "images", filename.split(".")[0] + ".png")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question très naïve : est-ce qu'on est obligés de convertir ? De mémoire les navigateurs gèrent le SVG non ?
Si on a une contrainte, il faut penser à vérifier que la conversion SVG --> PNG conserve bien les informations de transparence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question très naïve : est-ce qu'on est obligés de convertir ?
L'obligation de conversion est là uniquement pour l'export dans les autres formats.
Aujourd'hui on peut déjà mettre du svg dans un tuto, il s'affiche bien dans le navigo hors ligne. Mais lors de la publication, ça plante entre autre parce que PIL ne sait pas gérer le format SVG.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Erf. Dommage pour PIL, ça aurait allégé nos PDF en plus. Mais du coup OK.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est vraiment dommage, parce que ça permettrait d'afficher les icônes de tutos correctement sur des écrans à densité de pixel plus haute (rétina...)
les icones de tuto, c'est un autre problème. Elles sont en png, et il faudrait les convertir en svg pour obtenir ce que tu veux. Sauf qu'il n'existe quasi rien qui permet de convertir du png en pdf.
Et question: quelle est la taille en pixel du PNG ? Ca dépend du SVG ?
ça dépend du svg.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ça dépend du svg.
Donc théoriquement, on peut uploader un SVG avec une taille quasi-infinie, mais qui fasse seulement quelques Ko, et qui génèrera un PNG de peut-être plusieurs Go ? Et si j'ai pas la bonne echelle sur le SVG, j'aurais une image beacoup trop petite (alors qu'a la base c'est du vectoriel...). Je sais pas si c'est envisageable, mais il faudrait avoir une taille min et une taille max en pixels (hauteur et largeur) pour le PNG en sortie...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En fait, pour replacer le contexte ici, il s'agit uniquement des svg présents dans les liens externes (on ne peut pas ajouter de svg a une gallerie). Donc les svg ne sont uploadés que le jour ou un validateur valide le tutoriel.
Donc partant de là, si ton image est trop petite, ça se voit lors de la validation puisque ton navigateur affichera toujours la version svg. Si ton image est immense, ça se voit aussi lors de la validation.
Ah petite note tout de même, j'ai fait la PR en l'état pour laisser la QA faire son travail. Mais il ne faudra pas la merger tant que je n'ai pas rassemblé les 5 commits en un seul. Désolé. |
Je réserve la QA pour demain midi. |
correction pep8 suppression d'un print corrections des svg avec chemins relatifs mise à jour des actions de releases
|
C'est maintenant rassemblé |
@@ -22,13 +22,14 @@ Assurez vous que les dépendances suivantes soient résolues : | |||
- libxlst-dev (peut être appelée libxlst1-dev sur certains OS comme ubuntu | |||
- libz-dev (peut être libz1g-dev sur système 64bits) | |||
- python-sqlparse | |||
- libffi : ``apt-get install libffi-dev`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pour Mac OS et Windows, c'est quoi les dépendances ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il n'ya normalement pas de dépendance pour les autres OS
Fail copie-collé désolé. |
Pas d'erreur 500 à signaler quand j'utilise un lien externe. Par contre, effectivement un svg qui est initialement gros reste gros et ça peut vite devenir lourd en therme de png. il faudrait limiter la taille du PNG généré à 800px par exemple. |
oui, les svg sont interdit dans les galleries.
Quand tu dis reste gros, c'est à l'export ou c'est à l'affichage de la page web ? |
De ce que j'ai vu : à l'export. Le 17 mars 2015 14:15, firm1 notifications@github.com a écrit :
|
Ok, je vais voir comment je peux définir une taille maximale aux png générés |
Question: est ce qu'il y a une raison particulière ou est ce que c'est tout simplement parce que c'est pas le but de la PR (hors-scope) et que ça en demande une autre ? |
Plusieurs raisons :
|
|
|
|
Bon, sur vos conseils j'ai appliqué un resizing de l'image avant de la convertir, avec une max_size à 800 pixels en hauteur comme en largeur. Vous pouvez QA quand vous voulez ( cc @artragis ) |
Notre largeur d'images standard n'est pas de 960px ? https://github.com/zestedesavoir/zds-site/blob/dev/zds/settings.py#L210 |
Et si tu as 30 secondes pour passer sur ces commentaires : https://landscape.io/diff/114341 |
pour moi c'est toujours entre 13h et 14h. |
Ah bien vu, je corrige ça en même temps que la remarque de landscape |
|
ça passe pas :
svg utilisé : http://www.html5rocks.com/static/demos/svgmobile_fundamentals/images/HTML5-logo-faded-gradient.svg |
Quel horible image. Et grosse tranche de rire sur le Plus sérieusement, c'est parce que ce SVG ne déclare pas explicitement sa taille, mais a plutôt un attribut |
Voir à ce sujet la spécification W3C qui précise que si non spécifié, il faut assumer "100%", whatever that means. Voir aussi à ce sujet la spécification de |
J'ai regardé sur google
donc pour toi firm1, le fix de ce bug devrait se résumer à try:
width = float(svg.attrib["width"])
except KeyError:
width = 950 # en fait le param du settings.py
J'avais prévenu "entre 13h et 14h"... |
|
Merci @artragis pour la QA et pour le correctif du coup, j'en ai profité pour rajouter ton image dans les tests. Faut croire que je n'ai pas lu toute la spec du format svg, j'aurai juré que les tailles étaient obligatoires :) |
Waw. Pourquoi coveralls est pas content ? :o |
Quelque chose me dit que coveralls a un peu buggué (il n'a pas du recevoir les taux de couverture des autres tests) car travis est très content lui. |
|
||
def resize_svg(source, max_size=960): | ||
|
||
max_size = int(settings.THUMBNAIL_ALIASES[""]["content"]["size"][0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pourquoi une clef vide?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A cause de Easy_thumbnails qui dit :
Use the target '' for project-wide aliases
|
QA réalisée, ça marche pour moi ! |
Merci @artragis pour la QA. |
Ajoute la possibilité d'utiliser des images SVG dans un tutoriel
@firm1 cette fonctionnalité semble être la seule à utiliser
|
Il me semble que LXML nous sert à parser les tutos pour les enregistrer Le 06/03/2016 01:29, SpaceFox a écrit :
|
Elle servait aussi a parser le format .tuto a l'époque. Mais je pense
Malheureusement c'est le seul concurrent sur le marché. Ce pendant il Le dim. 6 mars 2016 10:05, artragis notifications@github.com a écrit :
|
Cette PR permet de donner la possibilité d'ajouter des images de types svg à un tutoriel. Des tests sont associés à la résolution du bug pour éviter les regressions.
Note pour QA
apt-get install libffi-dev
pip install --upgrade -r requirements.txt -r requirements-dev.txt