gpt4 book ai didi

android - 在两个不同的 Android 设备上创建的位图的 Base64 不相同

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:07 25 4
gpt4 key购买 nike

我在做了一些 Canvas 和绘画操作后创建了一个位图,然后将它进行 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);

最佳答案

即使字体完全相同,提示(字符字形和线条)也将取决于底层硬件和浏览器。

这是 HTML canvas 的众所周知的特征.

如果您希望能够在 2 个不同的设备上生成完全相同的图像,那么您需要使用您自己的原语来绘制 uint 数组/您自己的字体处理程序。

关于android - 在两个不同的 Android 设备上创建的位图的 Base64 不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48160215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com