2010-11-14 7 views
3

question assez simple mais spécifique ici:JPEG: Dimensions par rapport à la compression

Je ne suis pas tout à fait au courant de la norme JPEG de compression d'images. Est-ce que cela crée une meilleure image (c'est-à-dire une plus petite taille de fichier avec une qualité similaire) lorsque la dimension X (largeur) est très grande et la dimension Y (hauteur) très petite, ou vice versa?

L'utilisation pratique que j'ai pour cela est des sprites CSS. Si un site Web devait être composé de centaines de sprites CSS, il serait idéal de réduire la taille du fichier sprite pour aider les utilisateurs sur Internet plus lent et également pour réduire la charge du serveur. Si le standard JPEG fonctionne très bien sur une seule ligne horizontale, mais que le déplacement vertical nécessite beaucoup plus de complexité, il serait logique qu'une image de 100 sprites CSS 16x16 soit 1600x16. D'autre part, si le standard JPEG a beaucoup de complexité en travaillant horizontalement mais se déplace facilement d'une ligne à l'autre, vous pouvez créer un fichier plus petit ou avoir une meilleure qualité en faisant l'image 16x1600.

Si la meilleure compression se produit lorsque l'image est un carré parfait, vous voulez que l'image finale soit 160x160

Répondre

4

Le mécanisme de blocage MPEG/JPEG serait (très légèrement) favorable à une taille d'image est un exact multiple de la taille du bloc de compression dans chaque dimension. Cependant, au-delà, le format ne se soucie pas si les blocs sont verticaux ou horizontaux. Donc, la réponse directe à votre question serait "carré est aussi bon que n'importe quoi", tant que vos sprites se divisent facilement en un bloc de compression JPEG (assurez-vous qu'ils sont 8, 16, 24 ou 32 pixels de large et tout ira bien). Cependant, je voudrais aller un peu plus loin et dire que pour "la plupart" des morsures, vous allez avoir une taille d'image plus petite et une résolution plus claire si l'image originale est GIF au lieu de JPG, d'autant plus si vous pouvez utiliser une palette de couleurs réduite. Considérez pourquoi vous auriez besoin de JPG pour "des centaines de sprites".

+0

presque exactement le même que moi mais une minute avant :( – Puddingfox

+0

Vraiment la seule raison que JPEG est venu à l'esprit est qu'il donne une meilleure profondeur de couleur que GIF.J'ai tendance généralement vers JPEG quand je veux des images et GIF quand je veux animation Je tends vers le PNG seulement quand j'ai besoin de semi-transparence, sinon c'est trop grand pour être pratique Mais pour les sprites je suppose que tu as raison, le GIF devrait suffire Toute idée que le GIF préfère vertical ou horizontal ou s'en fout ? – stevendesu

+0

Le format GIF ne s'en souciera pas du tout.Vous pouvez créer l'image dans le format le plus pratique.Je ne m'attendais pas à ce qu'une image 1 sprite haute et 1000 sprites de large serait très facile à travailler, encore une fois, Je me risquerais à dire que "le carré est aussi bon que n'importe quoi" – Flipster

4

Il semble que le taux de compression de JPEG ne soit pas affecté par les dimensions de l'image. Cependant, il semble que vos dimensions devraient être des multiples de 8, mais dans tous vos exemples, vous avez des multiples de 16, donc vous devriez être bien là.

http://en.wikipedia.org/wiki/JPEG#JPEG_codec_example

Si je me souviens bien, PNG (étant sans perte) fonctionne beaucoup mieux quand la même couleur apparaît dans un étirement horizontal plutôt que d'un étirement vertical. Pourquoi faites-vous vos sprites JPEG? Si elles sont d'un jeu de couleurs limité (ce qui est probable si vous avez des sprites 16x16, animés ou non), PNG pourrait en fait produire de meilleurs fichiers avec une qualité d'image parfaite.

+0

Heck, je vais vous donner un point moi-même pour avoir raison sur l'argent! :-) – Flipster