Удаление черных полос с видео миниатюра - PullRequest
3 голосов
/ 29 октября 2011

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

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

Какой может быть более эффективный алгоритм для проверки?

Ответы [ 3 ]

6 голосов
/ 12 мая 2012

Одним из решений является сделать то же самое, что сделал YouTube. Если вы посетите их сайт и посмотрите на изображение и элемент, обертывающий изображение, вы увидите, что элемент обертки имеет css, похожий на этот:

display:inline-block;
height: /*here goes fixed height in px*/
overflow: hidden;

Они используют изображение, которое содержит черные области сверху и снизу (внутри этого контейнера), но они использовали css, чтобы скрыть его. Это означает, что элемент (на промежутке YouTube с дисплеем att: inline-block) будет меньше действительного изображения, и изображение будет отцентрировано / позиционировано таким образом, что верхняя и нижняя черные области будут перекрывать меньшую пленку и будут скрыты.

2 голосов
/ 29 октября 2011

Если вы хотите перейти по цвету, библиотека wideimage (на основе GD) уже реализовала это. Метод называется autoCrop, существует онлайн-демонстрация .

Это может уже удовлетворить ваши потребности.

2 голосов
/ 29 октября 2011

Вы должны проверить соотношение видео (4: 3 или 16: 9) и обрезать уменьшенное изображение, чтобы сохранить это соотношение.Не пытается определить цвет.

...