Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770 Форумы портала PHP.SU :: Версия для печати :: Фильтр неравномерности яркости [4]
По первому пункту вопрос: как можно реализовать из этого привязку загруженного изображения к php переменной? Иначе говоря, как ее можно по команде передать обработчику?
Пункт 2: Реализация ползунка, для выбора коэффициента. Передача значения ползунка php обработчику фильтра.
//обновляем скрытое поле формы, так что можно передать данные с помощью формы
change: function(event, ui) {
$('#hidden').attr('value', ui.value);
}
});
</script>
<inputtype='submit'value='Обработать'/>
</form >
<br><br>
<?php
$koefficient=$_POST[kof];
echo 'Коэффициент равен : '.$koefficient;
?>
Ползунок - Слайдер jQuery UI | Материалы сайта RUSELLER.COM . Слегка адаптировал под себя.
Я элементы загрузки и ползунок реализовал на отдельных страничках чтобы разобраться сначала с отдельными процессами. В процессе работы понял что нужно использовать сессии, так как при отправке загруженного изображения на обработку, первичный кадр будет пропадать, и ползунок передав значение php скрипту тоже будет сбрасываться на ноль.
Прошу помощи по поводу оптимизации этих двух процессов и применения в данном случае сессий . Сам в них только сейчас начал ковыряться вычитав об их применимости для решения моих задач.
Как должна выглядеть совместная работа этих пунктов проекта: на странице сайта нажимают кнопку выбора файла, выбирают картинку на компе, нажимают кнопку загрузки, она появляется на странице и в файлах сайта.
Затем с помощью ползунка выбирают коэфициент выравнивания и нажимают "обработать". По этой команде само изображение и коэффициент передается скрипту фильтра, разработанного ранее NoPaper'ом, который рядом с загруженным кадром выводит обработанный.
Комплекс усреднения яркости изображения на базе интерфейса сайта реализован.
Ссылку напишу сюда когда протестирую полноценно и выложу на доступный хостинг, (если предложите хранилище которое знаете - буду рад).
Вопрос: как реализовать идентификацию пользователя, который вошел на сайт, и который занимается собственно обработкой яркости картинок на этом сайте.
Суть в чем: пользователь загружает картинку => обрабатывает => ему не понравилось => обрабатывает еще раз с другим коэффициентом => ему опять не понравилось => обрабатывает еще раз с другим коэффициентом => ему понравилось => но он хочет посмотреть варианты получившихся кадров и понравившиеся сохранить.
Таким образом, хочу в конкретной сессии конкретного пользователя эту информацию сохранять, а при ее окончании информацию не нужную удалять.
Как это реализовать? Какие варианты? Есть ли возможность хранить кадры в сессии или в базу все таки заливать?
Хранить сами кадры в сессии не разумно, только если саму ссылку на изображение. Регистрация пользователей будет? Если нет, то обычных сессий будет достаточно.
Как вариант создать папку со временными картинками, назовем ее temp. При загрузке картинки, она будет сохраняться в ту папку с уникальным именем (будет генерироваться скриптом), в сессии будет переменная orig c ссылкой на изображение ($_SESSION['orig']='temp/123456789.png';). Если нужна оригинальная картинка - берем ее ссылку из сессии. При создании новой картинки создаем еще одну переменную, в которой будут храниться ссылки на новые изображения ($_SESSION['gen']=array('temp/23456789.png','temp/456789.png','temp/56789.png');)
Та же ситуация и со значениями пиков и провалов (не буду повторно отвечать в ту тему).
Папка temp будет для всех сессий? Картинки будем помечать как временные и удалять при окончании сессии? Или она просто как отстойник для ненужного и будет в свободное время пустой?
А по поводу пиков и провалов вопрос вроде несколько другой был, там все числа массива необходимо просто вывести как массив на экран. Есть еще там пара вопросов. лучше не буду сливать вместе темы.
Папка temp будет для всех сессий? Картинки будем помечать как временные и удалять при окончании сессии? Или она просто как отстойник для ненужного и будет в свободное время пустой?
Папка temp будет 'свалкой' временных картинок. И придется периодически ее чистить.
Можно, конечно, пописать эти действия в скрипт, но его придется периодически вызывать кроном, либо проверять эту папку при каждом вызове скрипта(нежелательно)
Чтот отвлекла меня обыденность от доработки данного детища. Ужас.
Вернувшись к работе уперся лбом в логику сохранения кадров.
Требуется сохранять исходный кадр и полученный в базу.
С сохранением как таковым проблем нет. Есть проблема с сохранением во первых синхронным, а во вторых по клику отдельной кнопки.
На данный момент кадр загружается на страницу=> попадает в отдельный обработчик=> показывается на странице=> после выбора коэффициента обрабатывается вторым обработчиком => показывается обработанный кадр, и исходный.
Вопрос, как прицепить эти два кадра, что бы по отдельной команде можно было бы эту парочку кинуть в базу. В последствии требуется попарно отображать на соседней странице. Вроде как выгрузка из базы
Я арендовал выделенный сервер, развернул там LAMP и запулил туда фильтр.
filter.altenrion.ru
Волнует работа коэффициента. Если коэффициент отвечает за удаление в значения яркости пикселя в + и в -, от высчитанного среднего значения, тогда его допустимый диапазон для каждого изображения будет разным, так как и среднее значение будет меняться. Иными словами в лучшем случае его значение будет равно 127,5 , а в худшем менее 30.
Еще как вариант добавить второй ползунок, который будет отвечать за яркость (светлее/темнее) (Добавление)
И еще, если картинка не загружена, текст перекрывает окно выбора файла, браузер опера
(Добавление)
добавил abs, уш не знаю как подрихтовать его, что бы при одном значении ползунка хоть 5 - 7 раз одно и то же выдавал. С чем связано не пойму...
Осталось реализовать загрузку в бд, либо по кнопке сразу и исходный и итоговый пхать ( можно только их пути) , либо просто при загрузке на страницу грузим в бд один кадр, при обработке второй.
Пересмотрел мног графиков гистограмм яркости в сети и начал сомневатся в правильности своего понимания.
У любого изображения можно вычислить яркость пикселя и построить гистограммку. Так вот на ней будут определенные пики, и впадины. это показывает, что яркость кадра неравномерна, с точки зрения цифр, но вполне может быть приемлимой или близка к идеальной с точки зрения человеческого глаза.
Так вот, по идее следует уравнивать яркость пикселей до среднего значения всего кадра, когда коэффициент равен нулю, а коэффициент (задаваемый ползунком) , в случае использования, уменьшает сглаживание. Иными словами , если K>0, то яркость новая = Δ яркости +- К, для тех пикселей где яркость выше среднего, новая яркость = Δ+К, для тех где яркость менее средней , нов ярк = Δ-К.
В случаях если К = 0, он попросту не будет учтен, либо создать отдельное условие если К=0, то просто везде сделать новую яркость = Δ.