我有一个LinearLayout,我想在图像中进行转换,但是我看到它变成了位图,背景失去了透明度。然后,我必须将其转换为图像png并执行此操作,并将alpha等于零的透明背景强加为仅部分透明。仅在白色纸张上图像是完全透明的,如果纸张是彩色的,则图像是部分透明的。我使用iText创建图像。
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,但我设置了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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句