2012-05-21 16 views

Odpowiedz

31

Znalazłem świetny samouczek dotyczący przetwarzania obrazu Android here.

public static Bitmap mark(Bitmap src, String watermark, Point location, Color color, int alpha, int size, boolean underline) { 
int w = src.getWidth(); 
int h = src.getHeight(); 
Bitmap result = Bitmap.createBitmap(w, h, src.getConfig()); 

Canvas canvas = new Canvas(result); 
canvas.drawBitmap(src, 0, 0, null); 

Paint paint = new Paint(); 
paint.setColor(color); 
paint.setAlpha(alpha); 
paint.setTextSize(size); 
paint.setAntiAlias(true); 
paint.setUnderlineText(underline); 
canvas.drawText(watermark, location.x, location.y, paint); 

return result; 
} 

Podziękowania dla Pete Houston, który dzieli się z nami przydatnymi poradnikami na temat podstawowego przetwarzania obrazu.

+0

Czy mogę wywołać tę metodę wewnątrz innej funkcji, gdzie obraz jest określony? – info

+1

Możesz wywołać go w innej funkcji. Na przykład - Wynik bitmapy = znak (src, znak wodny, lokalizacja, kolor, alfa, rozmiar, podkreślenie); – AndroidLearner

+1

Parametr Kolor powinien mieć kolor int, metoda paint.setColor() oczekuje na argument int. Jeśli masz lepszy pomysł, podziel się nim z nami. – technik

-1

użyj framelayout. umieść dwa obrazy w środku frarmayout i określ położenie obrazu znaku wodnego.

+0

Dzięki za odpowiedzi :) Ty prosimy o udostępnienie kodu – info

4

Wygląda na to, że szukasz waterrippleeffect jako tego. Zamów cały kod źródłowy. Sprawdź także zrzut ekranu, jak wygląda efekt.

+0

Dzięki za odpowiedź :) – info

16

Dla innych odniesienia, jeśli chcesz dodać logo swojej aplikacji (co jest w swojej rozciągliwej folderu (-ów)) na szczycie wykorzystania obrazu następującej metody:

private Bitmap addWaterMark(Bitmap src) { 
     int w = src.getWidth(); 
     int h = src.getHeight(); 
     Bitmap result = Bitmap.createBitmap(w, h, src.getConfig()); 
     Canvas canvas = new Canvas(result); 
     canvas.drawBitmap(src, 0, 0, null); 

     Bitmap waterMark = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.logo); 
     canvas.drawBitmap(waterMark, 0, 0, null); 

     return result; 
    } 
+0

Otrzymuję zerowy wynik z mapy bitowej, dlaczego to możliwe? – Andrea

Powiązane problemy