2016-05-16 3 views
3

У меня есть 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-файлов

+0

Если вы прокомментируете эту строку "canvas.drawBitmap (mBitmapLayoutPreview , 0, 0, краска); ", ваш линейный макет прозрачный или уже частично прозрачный? – MyWay

+0

уже частично прозрачен –

ответ

1

Я не утилизируется Canvas, но я поставил BackgroundColor Transparent:

mLinearLayout.setBackgroundColor(Color.TRANSPARENT); 
    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); 
    Log.i(TAG, "The color of background is: " +mCardLayout.getAlpha()); 

    mBitmapLayoutPreview = Bitmap.createBitmap(mLinearLayout.getDrawingCache()); 


    mLinearLayout.setDrawingCacheEnabled(false); // clear drawing cache 

mBitmapLayoutPreview моя LinearLayout с фоном Transparent

+1

Прохладный !!!! и хороший !! – Piyush

+0

С какого времени вы разрабатываете приложения для Android? – Piyush

+0

около двух лет. –

Смежные вопросы