我在做了一些画布和绘画操作后创建了一个位图,然后 Base64 将它编码为一个字符串。当我在单独的设备上重复该过程并比较两个设备返回的 base64 编码字符串时,它们是不同的。关于为什么会这样的任何想法?
生成位图的代码 -
Bitmap bitmap = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.save();
canvas.rotate(45, midX, midY);
canvas.restore();
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setTextSize(45);
paint.setTextAlign(Align.CENTER);
paint.setTextColor(Color.parseColor(colorString));
StaticLayout staticLayout = new StaticLayout("Text", paint, width,Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
staticLayout.draw(canvas);
将位图转换为 Base64 编码字符串的代码 -
int size = bitmap.getRowBytes() * bitmap.getHeight();
byte[] byteArray;
ByteBuffer byteBuffer = ByteBuffer.allocate(size);
bitmap.copyPixelsToBuffer(byteBuffer);
byteArray = byteBuffer.array();
String encodedString = Base64.encodeToString(byteArray, Base64.NO_WRAP);