Форматы изображения веб-сайта: Выбор правильного формата для правильной задачи

Предупреждение: [fункция] ожидает, что параметр 1 будет ресурсом, boolean задан

(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )

Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :

В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.

Расширение cURL определяет другой два типа ресурсов :

... дескриптор cURL и мультирум cURL.

Когда var_dump ed значения выглядят так:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

Это все большинство ресурсов - это числовой идентификатор ((1)) определенного типа ((curl)).

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


«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула false. Например, функция fopen имеет это описание:

Возвращаемые значения

Возвращает ресурс указателя файла при успешном выполнении или FALSE

Таким образом, в этом коде $fp будет либо resource(x) of type (stream), либо false:

$fp = fopen(...);

Если вы не операция fopen будет успешной или неудачной и, следовательно, будет ли $fp действительным ресурсом или false и передать $fp другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

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

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Связанные ошибки:

44
задан Community 23 May 2017 в 12:32
поделиться

3 ответа

JPEGs для фотографий. Я вижу JPEGs с текстом в них иногда, и они просто выглядят ужасными. Текст является лучшим для текста, иначе используйте PNG.

, Если это не фотография, но Вы хотите диаграмму его, используете PNG. PNG почти всегда меньше, чем эквивалентный gif и не потеряет качество как файл JPEG. PNG, эквивалентный из JPEG, обычно будет намного больше (предположение, что это является фотореалистическим). Могут быть времена, где это все еще желательно.

PNG действительно допускает 8 битов прозрачности, но если необходимо поддерживать IE, Вы найдете, что они постоянно отказываются поддерживать это правильно. Они делают , поддерживают единственный бит прозрачности в 8-разрядном изображении (по существу то же как gif), насколько я знаю. Существуют также многочисленные взломы, чтобы заставить 8-разрядную прозрачность работать в IE. Я никогда не беспокоился, сам.

, Таким образом:

  • фотографии → jpg
  • ! Фотографии → png
49
ответ дан MC Emperor 26 November 2019 в 21:41
поделиться

PNG должен использоваться когда:

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

, JPEG должен использоваться когда:

  • Сжатие без потерь не будет работать хорошо (такие как фотография)
  • , Насыщенный цвет необходим

, GIF должен быть когда:

  • PNG не доступен, такой как на очень старом программном обеспечении или браузерах
  • , Анимация необходима

Несмотря на мифы наоборот, PNG превосходит GIF по характеристикам в большинстве аспектов. PNG способен к каждому режиму изображения GIF кроме анимации, и при использовании того же режима изображения, PNG будет иметь лучшее сжатие из-за его начальника, ВЫКАЧИВАЮТ алгоритм по сравнению с LZW. PNG также способен к дополнительным режимам, которые GIF не может сделать, такие как цвет на 24 бита и альфа-прозрачность, но это - то, где можно столкнуться с проблемами в сети. Альфа-прозрачность имеет проблемы совместимости с IE6, которые хорошо документируются (хотя взломы существуют для двигений).

режимы PNG включают (это - просто маленькое подмножество)

  • цвет палитры 2 - 256 цветов (как GIF)
  • , цвет палитры 2 - 256 цветов, с прозрачным цветом (как GIF)
  • Истинный цвет (цвет на 24 бита)
  • Истинный цвет с альфа-каналом (цвет на 24 бита + альфа-прозрачность на 8 битов)

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

, Если Вы находите, что Ваши файлы PNG с прозрачностью не работают правильно в IE6, в то время как Ваши файлы GIF, тогда Вы используете цвет на 24 бита + альфа-прозрачность в PNG и режиме палитры с прозрачным цветом с GIF. Необходимо будет удостовериться, что Вы преобразовываете свой PNG в палитровый режим с прозрачным цветом.

PNG также имеет другие режимы, такие как цвет палитры с альфа-прозрачностью в палитре. Режимы, такие как это не могут использоваться в Photoshop.

13
ответ дан thomasrutter 26 November 2019 в 21:41
поделиться

Попытайтесь посмотреть на этот сайт http://www.killersites.com/articles_2005/theory/imagesInWebPages.jsp

, Они пытаются объяснить, что использовать когда

4
ответ дан CruelIO 26 November 2019 в 21:41
поделиться