Conversation
|
ping @pmartin |
|
I need your help to review my code : I'm not sure that is the correct way to render images... |
|
le rendu des écrans Retina est sympa |
|
(sorry for those who only read english ; what follows is in french -- as a summary, I wonder if this image corruption might not be caused by end-of-line normalization) Je ne prétend pas avoir de solution, mais je pense avoir trouvé une cause possible. A titre d'exemple, je bosse avec une image en PNG ; en regardant ce à quoi elle ressemble avec un éditeur hexa, elle commence par ceci : Maintenant, si je modifie J'obtiens le dump suivant : Si je met les deux dans le même bloc de code, pour faciliter la comparaison (première ligne = ce que j'ai via éditeur hexa ; seconde ligne = ce que j'ai via mon bout de code branché en plein milieu de Crew) : Autrement dit : l'enchainement J'ai donc un octet qui disparait en plein milieu de mon flux binaire ; avec deux conséquences :
Je ne sais pas comment empécher ce remplacement de En vrac, deux-trois liens sur lesquels je suis tombé (je n'ai pas eu le temps de tester plus) : Sinon, côté "revue de code", deux/trois notes rapides : - La détection des types de contenus via comparaison des quelques premiers octets : bon, y'a de bonnes chances que ça marche à quasiment tous les coups ; mais dans le principe, je me serais plutôt attendu à voir du [fileinfo](http://php.net/manual/en/function.finfo-file.php) ; ou à la limite du [`mime_content_type()`](http://php.net/manual/en/function.mime-content-type.php) si on veut toujours que Crew soit compatible PHP < 5.3. - Passer par des images "intégrées" _(src="data:image/...;base64,...")_ : est-ce que ça ne risque pas d'être un peu lourd pour de grosses images ? _(c'est une question, je n'ai pas la réponse)_ et ça ne marche pas sous des vieux navigateurs _(genre IE6 -- ce qui ne me dérange aucunement ^^ )_ ; mais je comprends le "pourquoi" : ça permet d'éviter la mise en place d'une nouvelle action, qui renverrait le flux binaire. - Cela dit, une nouvelle action renvoyant le flux binaire, ça pourrait à terme être utilisé pour d'autres types de fichiers binaires que les images, pour pouvoir les télécharger/ouvrir ; genre pour des PDF par exemple _(utilité pas gigantissime non plus : dans le principe, on n'est pas tellement censés mettre des fichiers de ce type sous git)_. |
|
@ratibus Comment puis-je utiliser la fonction |
|
En utilisant getimagesizefromstring ? :p |
|
Ok... |
Email notifications added
|
@pmartin Ça te dirait de reprendre cette PR pour la mener à terme ? 😏 |
|
Vais essayer de regarder ; pas "tout de suite", mais week-end prochain ou semaine prochaine, si je trouve un peu de temps :-) |
|
👌 |
|
Ping @pmartin 😄 |
Images (at least PNG) were not detected as binary files. Removed the sed call from getDiffFilesFromBranch(), and replaced it with a PHP explode on '\t' instead of ' '.
Added a execReturnRaw() method, to execute a shell command and return its output, without modifying / breaking it. It uses passthru(), which doesn't modify the output, as opposite to exec(), which ignores trailling whitespaces -- which means binary files' content gets broken when using 'git show' with exec(). Updated getShowFile() to use the new passthru()-base execReturnRaw() method, instead of the exec()-based one.
|
@KuiKui > I have just pushed two commits to my fork => https://github.com/pmartin/Crew/commits/display-image-files Those should help with :
The binary content that was gotten from
Those I've added a new I have not changed the way images files are detected in
What's the next step : do I do a PR from my fork/branch ? |
|
Cool ! |
|
Hello, |
|
si tu mets des chats dans tes demandes de revue de code, ça va pas le faire :o |
There was a problem hiding this comment.
initialiser ces paramètres ? pour toujours les avoir même quand on ne passe (même si dans la template on semble passer par une condition équivalente sur getIsBinary)
There was a problem hiding this comment.
et puis, c'est pas un peu triché cette detection par rapport au message git pour déterminer si le fichier est nouveau :o ?
|
@pmartin tu peux valider le fonctionnement de cette branche en interne ? |
|
@pmartin ça dit quoi ? 😄 |
Does it fix this issue : #119 ?