Премахване на черни ленти от миниатюрата на видеоклипа

Имам галерия, където потребителят може да изпраща Youtube връзки към видеоклипове и сървърът автоматично извлича миниатюрата от Youtube. Въпреки това, много видеоклипове съдържат черни ленти отгоре и отдолу на изображението. Знам произхода на черните ленти, но докато преоразмерявам миниизображението до квадрат, черните ленти пречат на дизайна.

Опитах се да анализирам цвета на пикселите от горе на долу, докато не се намери черен цвят (imagecolorat()), но все пак остава малко почти черен цвят, така че малките ленти все още остават в изображението.

Какъв може да бъде по-ефективен алгоритъм за проверка?


person Deniss Kozlovs    schedule 29.10.2011    source източник
comment
С PHP можете да изрежете изображението и да премахнете черните граници като това.   -  person machineaddict    schedule 30.04.2015


Отговори (3)


Ако искате да използвате цвета, библиотеката с широки изображения (базирана на GD) вече е внедрила това. Методът се нарича autoCrop, съществува онлайн демонстрация.

Това може вече да отговаря на вашите нужди.

person hakre    schedule 29.10.2011

Едно от решенията е да направите същото, което направи youtube. Ако посетите техния сайт и погледнете изображението и елемента, който обвива изображението, ще видите, че обвиващият елемент има css, подобен на този:

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

Те използват изображение, което съдържа черни области отгоре и отдолу (в този контейнер), но са използвали css, за да го скрият. Това означава, че елементът (в youtube span с att display:inline-block) ще бъде по-малък от действителната картина и картината ще бъде центрирана/позиционирана по този начин, така че горните и долните черни зони ще прелеят по-малката обвивка и ще бъдат скрити.

person cool    schedule 12.05.2012

Трябва да проверите съотношението на видеоклипа (4:3 или 16:9) и да изрежете миниатюрата, за да запазите това съотношение. Не се опитва да открие цвета.

person samura    schedule 29.10.2011