2010-12-31 16 views
13

Otwieram obraz png na Bitmapę, wprowadzając do niego pewne modyfikacje, a następnie zapisując go na dysku jako plik jpg. W przypadku, gdy png ma przezroczyste obszary, są one zapisywane jako czarne. Czy istnieje sposób na zmianę tego domyślnego zachowania, aby obraz był zapisywany na innym kolorowym tle, na przykład białym?Jak zmienić kolor tła zapisanej przezroczystej bitmapy

Dzięki

Odpowiedz

33

Można wyciągnąć go do nowej bitmapy, np

Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), image.getConfig()); 
Canvas canvas = new Canvas(newBitmap); 
canvas.drawColor(Color.WHITE); 
canvas.drawBitmap(image, 0, 0, null); 

następnie zapisać newBitmap zamiast

+2

Kiedy zapisuję obraz na płótnie ... kolor tła staję się czarny. Każdy inny sposób na zmianę .. Z góry dziękuję. –

+0

Jakikolwiek sposób zmienić czarny kolor tła? – Homen

+0

@RahulBaradia możesz sprawdzić moją odpowiedź, która może ci pomóc. –

0

Aby zapisać obraz i zachowuje swoje obszary przezroczyste nie można zapisać go ans JPG, trzeba zapisać go jako PNG, a nie tylko to, ale ustawienie ustawienie z setHasAlpha() do prawdziwej pRZED zapisywania obrazu, więc byłoby tak:

przed zapisaniem:

mBitmap.setHasAlpha(true); 

A podczas zapisywania, zapisz obraz jako PNG przy użyciu dowolnej metody zapisywania, na przykład:

File file = new File(folderDir, name); 
try { 
    file.createNewFile(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
FileOutputStream out = new FileOutputStream(file); 
mBitmap.setHasAlpha(true); 
mBitmap.compress(Bitmap.CompressFormat.PNG, 80, out); 
out.flush(); 
out.close(); 
Powiązane problemy