Каково различие между “JPG” / “JPEG” / “PNG” / “BMP” / “GIF” / Изображение “TIFF”?

Внимание: примерный код этого ответа (например, примерный код вопроса) использует расширение PHP mysql, которое устарело в PHP 5.5.0 и полностью удалено в PHP 7.0.0.

Если вы используете последнюю версию PHP, опция mysql_real_escape_string, описанная ниже, больше не будет доступна (хотя mysqli::escape_string является современным эквивалентом). В настоящее время опция mysql_real_escape_string имеет смысл только для устаревшего кода на старой версии PHP.


У вас есть два варианта - экранирование специальных символов в вашем unsafe_variable или использование параметризованный запрос. Оба будут защищать вас от SQL-инъекций. Параметрированный запрос считается лучшей практикой, но для его использования потребуется переходить на более новое расширение mysql в PHP.

Мы рассмотрим нижнюю строку удара, которая будет первой.

//Connect

$unsafe_variable = $_POST["user-input"];
$safe_variable = mysql_real_escape_string($unsafe_variable);

mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");

//Disconnect

См. также информацию о функции mysql_real_escape_string .

Чтобы использовать параметризованный запрос, вам нужно использовать MySQLi , а не функции MySQL . Чтобы переписать ваш пример, нам понадобится что-то вроде следующего.

prepare("INSERT INTO table (column) VALUES (?)");

    // TODO check that $stmt creation succeeded

    // "s" means the database expects a string
    $stmt->bind_param("s", $unsafe_variable);

    $stmt->execute();

    $stmt->close();

    $mysqli->close();
?>

Ключевая функция, которую вы хотите прочитать, будет mysqli::prepare .

Также, как предложили другие, вы можете сочтет полезным / легче повысить уровень абстракции с помощью чего-то вроде PDO .

Обратите внимание, что случай вы спросили об этом довольно просто, и что более сложные случаи могут потребовать более сложных подходов. В частности:

  • Если вы хотите изменить структуру SQL на основе пользовательского ввода, параметризованные запросы не помогут, и требуемое экранирование не распространяется на mysql_real_escape_string. В этом случае вам лучше было бы пропускать вход пользователя через белый список, чтобы обеспечить доступ только «безопасных» значений.
  • Если вы используете целые числа от пользовательского ввода в состоянии и берете mysql_real_escape_string, вы столкнетесь с проблемой, описанной в Polynomial в комментариях ниже. Этот случай более сложный, поскольку целые числа не будут окружены кавычками, поэтому вы можете справиться, подтвердив, что пользовательский ввод содержит только цифры.
  • Есть, вероятно, другие случаи, о которых я не знаю. Вы можете найти , этот является полезным ресурсом для некоторых более тонких проблем, с которыми вы можете столкнуться.
99
задан alex 4 December 2014 в 17:26
поделиться

8 ответов

Да. Они - различные форматы файлов (и их расширения файла).

статьи в Википедии для каждого из форматов дадут Вам довольно мало информации:

Форматы изображения могут быть разделены на три широких категории:

  • сжатие с потерями,
  • сжатие без потерь,
  • несжатый,

Несжатые форматы поднимают большую часть объема данных, но они - точные представления изображения. Растровые форматы, такие как BMP обычно являются несжатыми, хотя там также сжаты файлы BMP также.

Сжатие с потерями форматы обычно подходят для фотографий. Это не подходит для иллюстраций, рисунков и текста, как , артефакты сжатия от сжатия изображения будут безусловный победитель. Сжатие с потерями, поскольку его имя подразумевает, не кодирует всю информацию файла, поэтому когда это будет восстановлено в изображение, это не будет точное представление оригинала. Однако это в состоянии сжать изображения очень эффективно по сравнению с форматами без потерь, поскольку это отбрасывает определенную информацию. Главным примером формата сжатия с потерями является JPEG.

Сжатие без потерь форматы подходят для иллюстраций, рисунков, текста и другого материала, который не выглядел бы хорошим, когда сжато со сжатием с потерями. Поскольку имя подразумевает, сжатие без потерь закодирует всю информацию из оригинала, поэтому когда изображение будет распаковано, это будет точное представление оригинала. Как нет никакой потери информации в сжатии без потерь, она не в состоянии достигнуть столь же высокого сжатия как сжатие с потерями в большинстве случаев. Примерами сжатия изображения без потерь является PNG и GIF. (GIF только позволяет 8-разрядные изображения.)

TIFF и BMP являются оба форматами "обертки", поскольку данные внутри могут зависеть от метода сжатия, который используется. Это может содержать и сжатые и несжатые изображения.

то, Когда использовать определенный формат сжатия изображения действительно, зависит от того, что сжимается.

Связанный вопрос: Безжалостно сжимающиеся большие изображения для сети

87
ответ дан Community 24 November 2019 в 05:02
поделиться

Обычно это также:

Сжатие без потерь алгоритмы Сжатия без потерь уменьшают размер файла, не теряя качество изображения, хотя они не сжаты в столь же маленький файл как файл сжатия с потерями. Когда качество изображения оценено выше размера файла, алгоритмы без потерь обычно выбираются.

Сжатие с потерями алгоритмы Сжатия с потерями используют в своих интересах свойственные ограничения человеческого глаза и отбрасывают невидимую информацию. Алгоритмы наиболее сжатия с потерями допускают переменные уровни качества (сжатие) и поскольку эти уровни увеличены, размер файла уменьшается. На самых высоких уровнях сжатия ухудшение изображения становится примечательным как "сжатие artifacting". Изображения ниже демонстрируют значимый artifacting алгоритмов сжатия с потерями; выберите изображение миниатюр для просмотра версии в натуральную величину.

Каждый формат отличается, как описано ниже:

(Совместная экспертная группа по фотографии) файлы JPEG JPEG являются (в большинстве случаев) форматом с потерями; расширение файла DOS является JPG (другая ОС могла бы использовать JPEG). Почти каждый цифровой фотоаппарат может сохранить изображения в формате JPEG, который поддерживает 8 битов за цвет (красный, зеленый, синий) для 24-разрядного общего количества, производя относительно маленькие файлы. Если не слишком большой, сжатие заметно не умаляет качество изображения, но файлы JPEG переносят неисправность поколений, когда неоднократно редактируется и сохранено. Фотографические изображения могут быть лучше сохранены в формате не-JPEG без потерь, если они будут переизданы, или если маленькие "артефакты" (пятна, вызванные алгоритмом сжатия JPEG), недопустимы. Формат JPEG также используется в качестве алгоритма сжатия изображения во многих файлах Adobe PDF.

TIFF TIFF (Тяговый формат файла изображения) является гибким форматом, который обычно сохраняет 8 битов или 16 битов за цвет (красный, зеленый, синий) для 24-разрядных и 48-разрядных общих количеств, соответственно, с помощью или TIFF или имен файлов TIF. Гибкость TIFF является и благословением и проклятием, потому что никакой единственный читатель не читает каждый тип файла TIFF. TIFF с потерями и без потерь; некоторое предложение относительно хорошее сжатие без потерь для двухуровневого (black& белый) изображения. Некоторые цифровые фотоаппараты могут сохранить в формате TIFF, с помощью алгоритма сжатия LZW для устройства хранения данных без потерь. Формат изображения в формате TIFF широко не поддерживается веб-браузерами. TIFF остается широко принятым как стандарт файла фотографии в бизнесе печати. TIFF может обработать определенные для устройства цветовые пространства, такие как CMYK, определенный определенным набором чернил печатного станка.

PNG PNG (Переносимая сетевая графика) формат файла был создан как свободный, преемник с открытым исходным кодом GIF. Формат файла PNG поддерживает истинный цвет (16 миллионов цветов), в то время как GIF поддерживает только 256 цветов. Файл PNG выделяется, когда изображение имеет большой, однородно цветные области. Формат PNG без потерь подходит лучше всего для редактирования изображений, и форматы с потерями, как JPG, являются лучшими для заключительного распределения фотографических изображений, потому что файлы JPG меньше, чем файлы PNG. Много более старых браузеров в настоящее время не поддерживают формат файла PNG, однако, с Internet Explorer 7, все современные веб-браузеры полностью поддерживают формат PNG. Adam7-чередование позволяет ранний предварительный просмотр, даже когда только небольшой процент данных изображения был передан.

(формат обмена графическими данными) GIF GIF ограничен 8-разрядной палитрой или 256 цветами. Это делает формат GIF подходящим для хранения графики с относительно немногими цветами, такими как простые схемы, формы, логотипы и мультипликационные изображения стиля. Формат GIF поддерживает анимацию и все еще широко используется для обеспечения эффектов анимации изображения. Это также использует сжатие без потерь, которое более эффективно, когда большие площади имеют единственный цвет, и неэффективный для подробных изображений или размытых изображений.

BMP формат файла BMP (битовый массив Windows) обрабатывает графические файлы в ОС Microsoft Windows. Как правило, файлы BMP являются несжатыми, следовательно они являются большими; преимуществом является их простота, широкое принятие и использование в Windows-программах.

Использование для Веб-страниц / веб-приложения

следующее является кратким обзором для этих форматов изображения при использовании их с веб-страницей / приложение.

  • PNG является большим для IE6, и (потребует, чтобы маленький патч CSS получил прозрачность, работающую хорошо). Большой для иллюстраций и фотографий.
  • JPG является большим для фотографий онлайн
  • , GIF хорош для иллюстраций, когда Вы не хотите перемещаться в PNG
  • BMP, не должен использоваться онлайн в веб-страницах - пропускная способность отходов


  • Источник: Форматы Файла изображения

    27
    ответ дан Luke 24 November 2019 в 05:02
    поделиться

    Так как другие покрыли различия, я поражу использование.

    TIFF обычно используется сканерами. Это делает огромные файлы и действительно не используется в приложениях.

    BMP является несжатым и также делает огромные файлы. Это также действительно не используется в приложениях.

    GIF раньше была на всем протяжении сети, но впала в немилость, так как это только поддерживает ограниченное количество цветов и запатентовано.

    JPG/JPEG главным образом используется для чего-либо, что является качеством фотографии, хотя не для текста. Используемое сжатие с потерями имеет тенденцию ударить резкие строки.

    PNG не является столь же маленьким как JPEG, но является без потерь, таким образом, это хорошо для изображений с резкими строками. Это распространено в сети теперь.

    Лично, я обычно использую PNG везде, я могу. Это - хороший компромисс между JPG и GIF.

    5
    ответ дан Dana Robinson 24 November 2019 в 05:02
    поделиться

    Эти имена относятся к различным способам закодировать пиксельные данные изображения (JPG, и JPEG то же самое, и TIFF может просто включить jpeg с некоторыми дополнительными метаданными).

    Эти форматы изображения могут использовать различные алгоритмы сжатия, различные цветные представления, различную возможность в переносе дополнительных данных кроме самого изображения, и так далее.

    Для веб-приложений, я сказал бы, что jpeg или gif достаточно хороши. Jpeg используется чаще из-за его более высокой степени сжатия, и gif обычно используется для анимации легкого веса, где флэш-память (или что-то подобное) является законченным уничтожение или помещает, где прозрачный фон желаем. PNG может использоваться также, но у меня нет большого опыта с этим. BMP и TIFF, вероятно, не являются хорошими кандидатами на веб-приложения.

    1
    ответ дан PolyThinker 24 November 2019 в 05:02
    поделиться

    Какой coobird и сказанный Gerald.

    Кроме того, JPEG является именем формата файла. JPG является наиболее часто используемым сокращенным расширением файла для этого формата, поскольку у Вас должно было быть расширение файла с 3 буквами для более ранних систем Windows. Аналогично с TIFF и TIF.

    веб-браузеры в данный момент только отображают JPEG, PNG и файлы GIF - таким образом, те - те, которых можно показать на веб-страницах.

    1
    ответ дан Gnudiff 24 November 2019 в 05:02
    поделиться

    PNG поддерживает прозрачность альфа-канала.

    TIFF мог расширить опции Т.е. Географическая привязка для GIS приложения.

    я рекомендую только когда-либо использовать JPEG для фотографий, никогда для изображений как иллюстрация, логотипы, текст, схемы, штриховая графика.

    PNG Пользы.

    1
    ответ дан Roger Nelson 24 November 2019 в 05:02
    поделиться

    Именованные являются всей растровой графикой, но около этого не забывают все более важный vectorgraphics. Там сжаты и распаковал типы (в более или менее пути), но они все без потерь. Самый важный:

    1
    ответ дан juFo 24 November 2019 в 05:02
    поделиться

    Расширение файла говорит Вам, как образ сохраняется. Некоторые из тех форматов просто сохраняют биты, как они, некоторое сжатие изображение по-разному, включая методы с потерями и без потерь. Сеть может сказать Вам, хотя я знаю, что некоторые терпеливые респонденты обрисуют в общих чертах их здесь.

    сеть способствует gif, jpg, и png, главным образом. JPEG является тем же (или очень близко) к jpg.

    0
    ответ дан gbarry 24 November 2019 в 05:02
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: