|
Основной форум Сюда все проблемы связанные с программированием. |
02.06.2011, 23:11
|
#1
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Размытость
Как "сгладить" изображение (blur) средствами MP?.
UPD: В "Lib_effects" почему-то не работает.
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
03.06.2011, 10:32
|
#2
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Размытость
Можно помучаться выбирая цвета с картинки средствами мп и пары имеющихся либ. Можно написать свою либу.
|
(Offline)
|
|
03.06.2011, 10:55
|
#3
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Размытость
Косячная реализация бай ми.
function blue(color:integer):integer; begin color:=color+16777216; blue:=color mod 256; end;
function green(color:integer):integer; begin color:=color+16777216; color:=color div 256; green:=color mod 256; end;
function red(color:integer):integer; begin color:=color+16777216; color:=color div 65536; red:=color mod 256; end;
function blur(img:image; w,h:integer):image; var scr:image; begin scr:=imagefromcanvas(0,0,w,h); for i:=0 to w-1 do for j:=0 to h-1 do begin setcolor((red(getcolor(im,i,j))*2+red(getcolor(im,i+1,j))+red(getcolor(im,i,j+1))+red(getcolor(im,i+1,j+1))) div 5, (green(getcolor(im,i,j))*2+green(getcolor(im,i+1,j))+green(getcolor(im,i,j+1))+green(getcolor(im,i+1,j+1))) div 5, (blue(getcolor(im,i,j))*2+blue(getcolor(im,i+1,j))+blue(getcolor(im,i,j+1))+blue(getcolor(im,i+1,j+1))) div 5); plot(i,j); end; blur:=imagefromcanvas(0,0,20,20); drawimage(scr,0,0); end;
Результат (разблюрен квадрат 20х20 слева):
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо cherepets за это полезное сообщение:
|
|
03.06.2011, 20:20
|
#4
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Размытость
работает медленно на больших изображениях..
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
03.06.2011, 22:19
|
#5
|
ПроЭктировщик
Регистрация: 21.06.2009
Адрес: Беларусь, Столбцы
Сообщений: 148
Написано 32 полезных сообщений (для 57 пользователей)
|
Ответ: Размытость
можно ускорить, только памяти мого использовать придётся
|
(Offline)
|
|
04.06.2011, 06:21
|
#6
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Размытость
а либ больше никаких нет с blur'ом? (может я пропустил)
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
04.06.2011, 13:21
|
#7
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Размытость
В яве есть обращение к изображению как к массиву точек. Можешь переписать там мою функцию по нормальному и будет быстрее.
Но если ты хочешь в игре блюрить каждый кадр и это не шахматы - забей))
|
(Offline)
|
|
04.06.2011, 16:51
|
#8
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Размытость
Сообщение от cherepets
В яве есть обращение к изображению как к массиву точек. Можешь переписать там мою функцию по нормальному и будет быстрее.
|
int ai[] = new int[image.getWidth() * image.getHeight()];
image.getRGB(ai, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());
типо этого?
Сообщение от cherepets
Но если ты хочешь в игре блюрить каждый кадр и это не шахматы - забей))
|
нет, нужно заблюрить одно изображение (задний фон).
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
04.06.2011, 17:05
|
#9
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Размытость
А не проще использовать готовое изображения?
|
(Offline)
|
|
05.06.2011, 06:59
|
#10
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Размытость
нет не проще, т.к изображение подгружается из сети..
(из стороннего сайта)
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
26.06.2011, 17:10
|
#11
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Размытость
Хм, если нужно заблюрить картинку... можно сделать так:
Program blur; Uses alpha; var i:integer; img:image; begin img:=setOpaque(LoadImage ('/pic.png'),32); for i:=1 to 20 do begin drawImage (img,random (8),random (8)); end; img:=imagefromcanvas (0,0,GetImageWidth(img),GetImageHeight(img)); drawImage (img,0,0); repaint; repeat delay (1); Until (GetKeyPressed=KE_KEY0); end.
Результат до и после:
Рекомендую побаловаться со счетчиком i, с величиной прозрачности и с величиной случайного разброса для достижения набольшего эффекта
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо PassCall за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:28.
|