gpt4 book ai didi

java - 在 Android 上将 Canvas 保存为位图

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:29 24 4
gpt4 key购买 nike

我在将 Canvas 的内容放入 Bitmap 时遇到了一些困难。当我尝试这样做时,文件被写入了大约 5.80KB 的文件大小,但它看起来完全是空的(每个像素都是“#000”)。

Canvas 绘制了一系列由手写形成的相互连接的线条。下面是我的 View onDraw。 (我知道它阻塞了 UI 线程/不良做法/等等,但我只需要让它工作)

谢谢。

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

if (IsTouchDown) {

// Calculate the points
Path currentPath = new Path();
boolean IsFirst = true;
for(Point point : currentPoints){
if(IsFirst){
IsFirst = false;
currentPath.moveTo(point.x, point.y);
} else {
currentPath.lineTo(point.x, point.y);
}
}

// Draw the path of points
canvas.drawPath(currentPath, pen);

// Attempt to make the bitmap and write it to a file.
Bitmap toDisk = null;
try {

// TODO: Get the size of the canvas, replace the 640, 480
toDisk = Bitmap.createBitmap(640,480,Bitmap.Config.ARGB_8888);
canvas.setBitmap(toDisk);
toDisk.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("arun.jpg")));

} catch (Exception ex) {


}

} else {

// Clear the points
currentPoints.clear();

}
}

最佳答案

我有类似的问题,我有解决方案。这里是任务的完整代码/不要忘记 list 中的android.permission.WRITE_EXTERNAL_STORAGE权限/

  public Bitmap saveSignature(){

Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
this.draw(canvas);

File file = new File(Environment.getExternalStorageDirectory() + "/sign.png");

try {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(file));
} catch (Exception e) {
e.printStackTrace();
}

return bitmap;
}

关于java - 在 Android 上将 Canvas 保存为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001455/

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