Как проверить что картинка полностью черная?

Тема в разделе "Как сделать...", создана пользователем Ragger, 30 май 2012.

  1. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Желательно с помощью GD2.
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    можно каждый пиксель сравнить с черным цветом :) на GD2 это можно сделать :)
     
  3. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Это слишком долго. Миллион пикселей проверять для 1000x1000 картинки не вариант.
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    например для jpg картинок размер (сколько занимает места на диске) картинок любого цвета не различаются и не зависят от сжатия, тогда можно создать чёрную картинку заданной ширины и высоты, и сверить размер обоих картинок, если одинаковый значит цвет один, дальше проверит один пиксель и узнать какой цвет.
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Можно создать картинку полностью черную того же размера. Сделать md5_flle() для созданной и сверяемой картинки. Если хеши сойдутся, то черная картика. Только предварительно нужно всякие информационные данные из картинки удалить.
     
  6. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Ragger по пиксельная проверка это будет самый точный вариант, иначе не как. И на врятли это будет на столько долго как ты думаешь.

    Есть другой способ, но он менее точный. Делай ресайз кртинки пусть будет 10x10 (да хоть 1x1), качество ресайза 100% и уже потом прогоняй картинку попиксельно будет быстрее но менее точно. Также советую заранее предопределить порог разрешонного черного цвета, потому что при ресайзе разное может произойти. По идеи при ресайзе в 1 пиксель чисто черного изображения без ужимания качества ты должен получить чисто черный пиксель, но это не факт, может получиться что на какойто картинке черный цвет преобладал и в итоге при ресайзе у тебя будет 1 черный пиксел.
     
  7. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Не совсем то что надо, но думаю немного в ту сторону. По-крайней мере должно помочу гуру сделать необходимое. Топикастер, удали плз если я чушь всболтнул.
    http://habrahabr.ru/post/55926/
     
  8. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
  9. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Данное решение будет работать медленнее чем попиксельное сравнение, поскольку там происходит всё тоже попиксельное сравнение плюс еще кучка дополнительных математических операций.
     
  10. Ragger

    Ragger

    Регистр.:
    14 июн 2008
    Сообщения:
    167
    Симпатии:
    183
    Я вырезал лишнее, теперь перебор c шагом в 25 пикселей очень быстро проходит.
    К тому же можно фильтровать не только черные картинки, а например из двух-трех цветов.