2018 Mască de culoare raster Android, eliminarea culorilor Android

Androids .help Comunitatea Android Android.

Creez un bitmap, apoi desenez o alta grafica solida color pe partea de sus. Și acum vreau să schimb prima imagine bitmap, așa că culoarea solidă pe care am pictat-o ​​va fi transparentă.







Sau pur și simplu, vreau să elimin toți pixelii de aceeași culoare din bitmap. Am havie încercat toate colorfilter și xfermode nu este norocos, există o altă opțiune pentru eliminarea culorilor, excelent pentru a face acest pixel de pixel?

Top 5 răspunsuri

Pixelul pe pixel nu este cea mai gravă opțiune. Doar nu apelați SetPixel în interiorul unei bucle. Completați o serie de numere întregi ARGB cu getPixels, schimbați-l în loc, dacă nu este necesar să salvați originalul și apoi apelați setPixels la sfârșit. Puteți face această linie cu linia dacă memoria este o problemă sau puteți face totul într-un singur cadru. Nu este nevoie să umpleți întregul bitmap pentru culoarea suprapusă, deoarece faceți doar o înlocuire simplă (dacă pixelul curent este color1, setați culoarea la 2).







Aceasta funcționează pentru a elimina o anumită culoare dintr-o imagine bitmap. Cea mai mare parte a utilizării AvoidXfermode. De asemenea, ar trebui să lucrați dacă încercați să schimbați o culoare într-o altă culoare.

Trebuie să adaug faptul că aceasta răspunde la întrebarea titlului de eliminare a culorilor dintr-o imagine bitmap. Problema concretă, probabil, este mai bine rezolvată prin intermediul programului PorterDuff Xfermode, după cum a spus OP.

În cazul meu special de utilizare, am redat pagina în PDF (prin intermediul APV PDFView) într-o gamă de pixeli int []. că voi merge la Bitmap.createBitmap (int [], int, int, Bitmap.Config). Această pagină conține linii de artă desenate pe un fundal alb și trebuie să șterg fundalul, păstrând în același timp anti-aliasing.

Nu am putut găsi o cale spre Porter - Duff care a făcut exact ceea ce mi-am dorit, așa că am ajuns să pierd stabilitatea și să-i distrug pixelii și să-i întorc unul câte unul. Rezultatul a fost surprinzător de simplu și de productiv:

Aceasta este o opțiune ideală pentru salonul de desen, deoarece orice culoare poate fi utilizată pentru linii fără pierderi de anti-aliasing. Folosesc un canal roșu, dar puteți folosi verde, schimbând 16 biți în loc de 8 sau albastru, deplasând 24.

Întrebări recente







Articole similare

Trimiteți-le prietenilor: