forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Размытость (http://forum.boolean.name/showthread.php?t=14828)

Trazzy 02.06.2011 23:11

Размытость
 
Как "сгладить" изображение (blur) средствами MP?.

UPD: В "Lib_effects" почему-то не работает.

cherepets 03.06.2011 10:32

Ответ: Размытость
 
Можно помучаться выбирая цвета с картинки средствами мп и пары имеющихся либ. Можно написать свою либу.

cherepets 03.06.2011 10:55

Ответ: Размытость
 
Косячная реализация бай ми.
PHP код:

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:imagew,h:integer):image;
var 
scr:image;
begin
scr
:=imagefromcanvas(0,0,w,h);
for 
i:=0 to w-do
for 
j:=0 to h-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 слева):

Trazzy 03.06.2011 20:20

Ответ: Размытость
 
работает медленно на больших изображениях..

_Nox_ 03.06.2011 22:19

Ответ: Размытость
 
можно ускорить, только памяти мого использовать придётся

Trazzy 04.06.2011 06:21

Ответ: Размытость
 
а либ больше никаких нет с blur'ом? (может я пропустил)

cherepets 04.06.2011 13:21

Ответ: Размытость
 
В яве есть обращение к изображению как к массиву точек. Можешь переписать там мою функцию по нормальному и будет быстрее.
Но если ты хочешь в игре блюрить каждый кадр и это не шахматы - забей))

Trazzy 04.06.2011 16:51

Ответ: Размытость
 
Цитата:

Сообщение от cherepets (Сообщение 190282)
В яве есть обращение к изображению как к массиву точек. Можешь переписать там мою функцию по нормальному и будет быстрее.

Код:

int ai[] = new int[image.getWidth() * image.getHeight()];
image.getRGB(ai, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());

типо этого?

Цитата:

Сообщение от cherepets (Сообщение 190282)
Но если ты хочешь в игре блюрить каждый кадр и это не шахматы - забей))

нет, нужно заблюрить одно изображение (задний фон).

JACUK 04.06.2011 17:05

Ответ: Размытость
 
А не проще использовать готовое изображения?

Trazzy 05.06.2011 06:59

Ответ: Размытость
 
нет не проще, т.к изображение подгружается из сети..
(из стороннего сайта)

PassCall 26.06.2011 17:10

Ответ: Размытость
 
Вложений: 2
Хм, если нужно заблюрить картинку... можно сделать так:

PHP код:

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

Результат до и после:
Вложение 14212Вложение 14213

Рекомендую побаловаться со счетчиком i, с величиной прозрачности и с величиной случайного разброса для достижения набольшего эффекта


Часовой пояс GMT +4, время: 13:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot