Hi!Android. Jak napisać tekst na naprawdę wielkiego obrazu (bitmapy) i zapisać, że
jest następujący problem: trzeba napisać długi tekst na dość duży obraz i zapisać go tam.
Warunki:
- rozmiar obrazu na 3000 x 2000;
- Dzielenie obrazu na części jest niedozwolone, ponieważ tekst jest napisany na cały obraz od krawędzi do krawędzi.
- Dodano: Nie mogę użyć skali bitmapowej ani skali matrycy, ponieważ konieczne jest zapisanie tekstu na oryginalnym obrazie (w pełnym rozmiarze).
- Dodano: Kiedy pokazać obraz dla użytkownika używam skalę mapy bitowej
options.inSampleSize = 10;
i nie ma problemów z brakiem pamięci
obecnego problemu:
Kiedy próbuję załaduj ten obraz w błąd Bitmapa występuje z ograniczeniem pamięci (budżet VM).
Pytania:
- Jak tekst na dużym obrazie bez ładowania go do pamięci?
- Czy istnieją do tego biblioteki? Przykładem
Kod:
// Step 1. Open image and load to Bitmap
Bitmap bitmap = BitmapFactory.decodeFile(fileName); // runtime Exception like "VM budget" !
// or
//Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.big_img_1); // as in previous runtime Exception like "VM budget" !
// or
//Bitmap bitmap = BitmapFactory.decodeStream(fileInputStream); // as in previous runtime Exception like "VM budget" !
// Step 2. Write text
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(14);
Canvas canvas = new Canvas(bitmap);
canvas.drawText("some long long string over all image", 100, 100, paint);
// Step 3. Save bitmap to file
OutputStream fOut = new FileOutputStream(new File(fileName));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
/*
_________________________________________________
| |
| |
| |
| |
| IMG |
| |
| |
| some long long string over all image |
|________________________________________________|
*/
Obraz ma przezroczyste elementy, czy nie? – Plato
brak przezroczysty używany – Andrei
szczęście na tym? – Adrian