У меня есть проект, где я должен преобразовать большое количество типов изображения, чтобы быть визуализуемым в приложении Silverlight - TIFF, GIF, WMF, EMF, BMP, DIB, и т.д. Я могу сделать эти преобразования на сервере прежде, чем гидратировать приложение Silverlight.
Однако я не уверен, когда я должен принять решение преобразовать в который формат, или JPG или PNG. Есть ли некоторый стандарт там как TIFF, должен всегда быть JPEG, и GIF должен всегда быть PNG. Или, если BMP составляет 24 бита, он должен быть преобразован в JPEG - немного понижаются, и это может быть PNG. Или все - PNG и почему?
То, что я обычно вижу или вижу в ответ на этот тип вопроса, "Ну, если изображение является фотографией, пойдите с JPEG" или, "Если это имеет прямые линии, PNG лучше". К сожалению, я не буду иметь роскоши просмотра ни одних из файлов изображений вообще и хотел бы просто стандартный способ сделать это с помощью кода, даже если это будет огромным количеством условных операторов.
Есть ли какие-либо стандарты или лучшие практики вокруг этого предмета?
Самая простая вещь, которая могла бы работать , - это «сохранять все детали» («100% качество»), т.е. всегда использовать PNG, а не JPEG.
Изображения PNG всегда выглядят идентично оригиналу (без потерь). Изображения JPG обычно выглядят примерно так же, как оригинал, но на некоторых изображениях (например, штриховых рисунках) JPG дает странные артефакты сжатия (с потерями).
Одним из больших преимуществ JPG перед PNG является то, что JPG обеспечивает хороший баланс между размером изображения и качеством. Если размер файла не вызывает беспокойства, то, вероятно, лучше всего подойдет PNG, поскольку он предлагает большую гибкость, чем JPG. Однако это не совсем ответ на ваш вопрос.
Вы можете использовать сервис вроде Smush.it - он подскажет вам лучший оптимизированный формат для изображений и выполнит сжатие за вас.
Если я правильно помню, они выполняют все сжатия для каждого изображения, затем сравнивают результаты... возвращая лучший из набора.