Autor Wątek: blitowanie w javie  (Przeczytany 2434 razy)

Offline rhdbisgrt

  • Użytkownik

# Listopad 27, 2012, 18:18:01
Czy ktos wie jak moglbym zrobic 'blitowanie' w jawie? Chcialbym miec tablice pikseli z obrazem i w petli blitowac je na okno. Niestety gubie sie troche w tych obiektowych api - moge siobie zrobic np

 pixels[][] -> MiemoryImageSource -> Image

 i drawnac to na graphics ale o ile to mialoby dzialac w petli to musialbym kreowac i niszczyc te posrednie byty w kólko i to wydaje mi sie troche bez sensu (i mnie wpienia) (a glebiej wertowac api troche mi nie po drodze bo jawe obczajam tylko przy okazji)
« Ostatnia zmiana: Listopad 27, 2012, 18:32:31 wysłana przez rhdbisgrt »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Paweł

  • Użytkownik

  • +3
# Listopad 27, 2012, 19:16:41
Hah, już jak pytałeś o implementacje kontenera wiedziałem że zaraz wyskoczysz z tego typu "problemami". Obczajałem ten wątek tylko przy okazji więc udzielanie odpowiedzi wydaje mi się trochę bez sensu.

Offline rhdbisgrt

  • Użytkownik

# Listopad 27, 2012, 19:39:07
Hah, już jak pytałeś o implementacje kontenera wiedziałem że zaraz wyskoczysz z tego typu "problemami". Obczajałem ten wątek tylko przy okazji więc udzielanie odpowiedzi wydaje mi się trochę bez sensu.

Nie jestem javovcem i tylko ją aktualnie troche obczajam dlatego pytam o pewne sprawy ktore mnie troche zainteresowały (pozniej ją rzucę ;-)

Offline MaxGarden

  • Użytkownik
    • Profil na warsztacie

# Listopad 27, 2012, 21:00:21
wertowac api troche mi nie po drodze bo jawe obczajam tylko przy okazji
Ale pisać wątki do byle pierdoły to masz po drodze :)?

Offline rhdbisgrt

  • Użytkownik

# Listopad 27, 2012, 21:28:43
Ale pisać wątki do byle pierdoły to masz po drodze :)?

o nie pierdoly tylko nawet ciekawe tematy, Tyle ze dodalem uzasadnienie czemu tu pytam a nie w dokumentacji (poniekad po temu by nie byc do niej odsylanym) Wertowalbym pewnie ale tego jest sporo a ja w javie jestem z przygodną wizytacją.

Offline Shusty

  • Użytkownik

# Listopad 28, 2012, 00:35:56
@rhdbisgrt
Nie wiem czy oto Ci chodzi, ale pisałem sobie jakiś czas temu filtry graficzne (dolno/górnoprzepustowe, gradientowe, statystyczne etc.) i robiłem to tak:

buf.setRGB( x, y, color2.getRGB() );

Gdzie buf to BufferedImage (którego nie radzę używać bo jest super wolny i są lepsze opcje, ale wtedy o tym nie wiedziałem).

x,y - twoje zmienne z fora
color2 - obiekt typu Color

Ja w ten sposób jeździłem pętlą po tym i było ok.

EDIT: Jako gratis dodam wątek, w którym się kiedyś udzieliłem i zawartość jego powinna Cię jeszcze bardziej zadowolić.: http://qa.warsztat.gd/1938/jak-pociac-obrazek-w-javie-
« Ostatnia zmiana: Listopad 28, 2012, 00:59:51 wysłana przez Shusty »

Offline rhdbisgrt

  • Użytkownik

# Listopad 28, 2012, 13:21:54
@rhdbisgrt
Nie wiem czy oto Ci chodzi, ale pisałem sobie jakiś czas temu filtry graficzne (dolno/górnoprzepustowe, gradientowe, statystyczne etc.) i robiłem to tak:

buf.setRGB( x, y, color2.getRGB() );

Gdzie buf to BufferedImage (którego nie radzę używać bo jest super wolny i są lepsze opcje, ale wtedy o tym nie wiedziałem).

x,y - twoje zmienne z fora
color2 - obiekt typu Color

Ja w ten sposób jeździłem pętlą po tym i było ok.

EDIT: Jako gratis dodam wątek, w którym się kiedyś udzieliłem i zawartość jego powinna Cię jeszcze bardziej zadowolić.: http://qa.warsztat.gd/1938/jak-pociac-obrazek-w-javie-

Pogadalem na stacku i wynika z tego ze mozna zrobic
tak jak mowilem tj robic z pixeli  image - z tym ze nie
jestem jak mowielem zupelnie pewien czy takie masywne
tworzenie imagow w loopie (i nie zwalnianie ich ) nie jest niepotrzebnym obciazeniem - ale podobno chyba tak mozna. jest jeszcze jakas metoda z WritableRaster ale nie probowalem.


Offline Shusty

  • Użytkownik

# Listopad 28, 2012, 13:59:32
To co napisałem to nic innego jak działanie na tablicy bajtów, tylko obiekty w Javie trzymają się hermetyzacji jak tylko mogą i użyczają Ci dostępu do tablicy przez gettery i settery. Oczywiście na siłę możesz zawsze zrobić swoją tablicę Image, pobrać co trzeba i potem oddać, ale nie bez powodu Java nakłania do czegoś innego.

Poza tym jak już napisałem masz jeszcze openCV jak chcesz szybkości. Obiekty się same zwolnią jak im się zachce, więc o to się nie martw, bo nie będą siedzieć w pamięci, jeśli będą zbyt dużym obciążeniem. Zawsze możesz też zasugerować odśmiecanie System.gc();