Arrêter une source indexée de transformer l'icône de l'onglet en une boîte noire

FixConversionService
Expédié
6 septembre 2026 à 04:30 UTC
Auteur
Kamo
Commite
3f4c60b

Une icône d'onglet téléchargée en tant que PNG-8 transparent est arrivé dans l'onglet navigateur en noir carré avec un logo en lambeaux dessus. Mesuré à l'aide du téléchargement qui l'a exposé: 9216 pixels dans favicon-96x96.png, les 5194 qui étaient transparents sont sortis opaques noir, et la marque qui a survécu a été de 237 couleurs distinctes à 46. La transparence était intacte jusqu'à l'échelon global. ImageIO décodécode un indexé PNG sur TYPE-BYTE-INDEXED avec un indexColorModel dont la transparence est une entrée de palette - pixel (0,0) indique correctement 0047704C, alpha zéro. Thumbnailator préserve l'image de la source TYPE lorsqu'elle s'échelonne, de sorte qu'il a construit un nouveau indexé image avec une palette DEFAULT: l'entrée alpha a disparu, les indices survivants les couleurs qui ne signifiaient plus rien, et (0,0) est revenu FF000000. La toile de fitSquare était ARGB tout au long et fidèlement copié pixels qui étaient déjà noir - c'est pourquoi le bogue ressemble à ça qu'il y vit et ne le fait pas. La zystérine se normalise maintenant à TYPEINT-ARGB avant que quoi que ce soit d'autre ne touche l'image. Conversion une fois où la source est produite, plutôt que de passer .imageType() à chacun des sept sites d'appel, fait "tout ce qui a dépassé ce point est ARGB" pour les consommateurs ont ajouté plus tard, et coûte un exemplaire au lieu de sept. Pas nouveau, et pas seulement PNG-8: GIF est toujours indexé, donc n'importe quel org dont l'img/logo.svg était vraiment un GIF a eu un favicon noir depuis longtemps que le chemin de trame a existait. Il est passé inaperçu parce que la seule source que n'importe qui l'alimentait était un SVG. qui bat Batik répond en ARGB. Il est devenu accessible intentionnellement lorsque les icônes d'onglet J'ai commencé à accepter les téléchargements de trames - PNG-8 est exactement ce que "sauvegarder pour le web" vous donne pour une petite icône de couleur plate. Quatre tests de régression le couvrent: les PNG, les cadres .ico (qui partent d'un route différente, emballée par IcoEncoder), un GIF, et un code de bord, qui affirme la marque, conserve son la couleur propre plutôt que la simple transparence. Tous les essais existants dans cette catégorie TYPEINTB, la seule forme d'entrée qui n'a jamais eu le problème. Vérifié par rapport au fichier réel téléchargé: 5185/9216 pixels transparents, appariés la proportion de la source et 237 couleurs distinctes où il y avait 46. Les organisations ayant une icône d'onglet déjà générée ont besoin d'une ré-approvisionnement pour choisir les nouveaux octets vers le haut; la révision du thème change avec lui, de sorte que les navigateurs vont revalider.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation