android - 在Android Java中创建位图后为空
问题描述
我得到一个错误
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at com.kotlin.ambulantlcs.helpers.PrinterHelper.getTrasparentBitmapCopy(PrinterHelper.java:145)
at com.kotlin.ambulantlcs.helpers.PrinterHelper.convertStringToImage(PrinterHelper.java:133)
当我在 Android Java 中运行此代码时
public static void convertStringToImage(Activity activity)
{
Bitmap bitmap = Bitmap.createBitmap(300, 400, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.BLACK);
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.LEFT);
paint.setAntiAlias(true);
paint.setTextSize(12);
canvas.drawText("Lorem Ipsum Dolor Sed Actum Malo", 10, 10, paint);
canvas.save();
canvas.restore();
int iRet = ftplib.printPicture(bitmap, FTPAndroidLib.DITHER_NONDITHERING, bitmap.getHeight(), bitmap.getWidth()); ===> ERROR IS HERE
}
我正在尝试创建以编程方式创建的文本图像,因为稍后我会将其连接到另一个图像。但在我这样做之前,我先把它打印出来。
编辑
Bitmap bitmap = Bitmap.createBitmap(200, 100, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.LEFT);
paint.setAntiAlias(true);
paint.setTextSize(9);
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(9);
canvas.drawText("Lorem Ipsum Dolor Sed Actum Malo", 0, 50, paint);
canvas.save();
canvas.restore();
int iRet = ftplib.printPicture(bitmap, FTPAndroidLib.DITHER_NONDITHERING, bitmap.getWidth(), bitmap.getHeight());
编辑 2
Bitmap bitmap = Bitmap.createBitmap(350, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextAlign(Paint.Align.LEFT);
paint.setAntiAlias(true);
paint.setTextSize(20);
Log.i("TAG", message);
canvas.drawText("Lorem Ipsum Dolor Sed Actum Malo", 0, 50, paint);
canvas.save();
int iRet = ftplib.printPicture(bitmap, FTPAndroidLib.DITHER_NONDITHERING, bitmap.getWidth(), bitmap.getHeight());
解决方案
我希望它会帮助你,试试吧。
Bitmap bitmap = Bitmap.createBitmap(300, 400, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE); // White background color of canvas.
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.LEFT); // Text align left
paint.setAntiAlias(true);
paint.setTextSize(12);
canvas.drawPaint(paint);
paint.setColor(Color.BLACK); // Black text color
paint.setTextSize(20);
canvas.drawText("Put Your Text Here", 10, 10, paint);
int iRet = ftplib.printPicture(bitmap, FTPAndroidLib.DITHER_NONDITHERING, bitmap.getHeight(), bitmap.getWidth());
canvas.restore();
推荐阅读
- java - 从 Modelclass 层次结构的顶层调用 setter
- php - 小数点前 9 位和小数点后 1 到 3 位数字的正则表达式
- automation - 如何通过小袋鼠自动化浏览器回滚数据库中所做的更改
- postgresql - 如何在不嵌套输出的情况下将模型包含在 sequelize 中
- php - 将帖子与用户 ID 一起存储,参考 Laravel 6 中的用户表
- java - swt中的Scrollable和ScrolledComposite有什么区别?
- javascript - JavaScript 颜色数组
- c# - 带计数器的标签
- python - 图像和标签不会出现在 Tkinter 中
- php - 软件包 laravel/ui 版本的 PHP 要求与您的 PHP 版本 (5.6.40) 不兼容