У меня есть LinearLayout Я хочу преобразовать изображение, но я увидел, что он превращается в растровое изображение, когда фон теряет прозрачность. Затем я должен превратить его в изображение png и сделать это, и наложение прозрачного фона с альфой, равным нулю, является лишь частично прозрачным. Изображение полностью прозрачное только на бумаге белого цвета, если бумага окрашена, изображение частично прозрачно. Я использовал iText для создания изображения.Как преобразовать LinearLayout в изображение, сохраняя прозрачный фон
mLinearLayout.setDrawingCacheEnabled(true);
mLinearLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
mLinearLayout.layout(0, 0, 642, 400);
mLinearLayout.buildDrawingCache(true);
mBitmapLayoutPreview = Bitmap.createBitmap(mLinearLayout.getDrawingCache());
mLinearLayout.setDrawingCacheEnabled(false); //lose transparency
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmapLayoutPreview.compress(Bitmap.CompressFormat.PNG, 100 , stream);
Canvas canvas = new Canvas(mBitmapLayoutPreview);
canvas.drawColor(Color.TRANSPARENT);
final Paint paint = new Paint();
paint.setAlpha(0);
canvas.drawBitmap(mBitmapLayoutPreview, 0, 0, paint);
Image myImg = Image.getInstance(stream.toByteArray()); //is only partially transparent
Я видел, что частичная прозрачность вызвана цветовым пространством = 3. Я - myImg. Я использую IText для создания PDF-файлов
Если вы прокомментируете эту строку "canvas.drawBitmap (mBitmapLayoutPreview , 0, 0, краска); ", ваш линейный макет прозрачный или уже частично прозрачный? – MyWay
уже частично прозрачен –