-
Notifications
You must be signed in to change notification settings - Fork 30
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
Display image files #126
base: develop
Are you sure you want to change the base?
Display image files #126
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 |
->filterByType(CommentPeer::TYPE_LINE) | ||
->find() | ||
; | ||
$this->oldImageExists = !(strpos($oldBinaryContent, 'fatal: Path') === 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.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 ?