如何在字符串中转换画布图像?

时间:2018-07-16 09:41:16

标签: android android-studio canvas printing

实际上,我正在尝试为餐厅服务生制作应用程序,

现在,我添加了一些服务员可以将其添加到盘子的变体,但是现在我正尝试添加一个免费的变量,其中服务员可以手动绘制“ + Peperoni”之类的东西并将其发送到厨房。

我正在使用this库来绘制画布,现在要发送绘制的图像,我应该发送一个String,其中每一行都是一排像素,如果没有像素(白色像素),我应该发送0,并且有一个黑点,我应该发送1,而如果有一个白色的行以获得更好的性能,我什么都不应该发送。

我可以绘制的图像的最大Sime为512x360像素。

enter image description here

您是否对我可以做的事情有什么建议? 我是android的新手,所以我什至不知道从哪里开始写和类似的算法

这是我的CustomAlert中的代码,其中显示了图形布局:

public void drawAlert(){
    final AlertDialog.Builder mBuilder = new AlertDialog.Builder(this);

    @SuppressLint("InflateParams") View mView = getLayoutInflater().inflate(R.layout.alert_drawable, null);

    ImageButton del = mView.findViewById(R.id.deleteDraw);
    ImageButton draw = mView.findViewById(R.id.drawButton);
    final RelativeLayout parentView = mView.findViewById(R.id.parentView);
    final CanvasView canvasView = new CanvasView(this);
    parentView.addView(canvasView);

    mBuilder.setView(mView);
    final AlertDialog dialog = mBuilder.create();
    dialog.show();


// Here i was trying to make the bitmap as an Array of Bytes but the app crash

    draw.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Bitmap bitmap = parentView.getDrawingCache();

            ByteArrayOutputStream BAOS = null;

            try {
                BAOS = new  ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG,100, BAOS);
                byte [] b= BAOS.toByteArray();
                String temp = Base64.encodeToString(b, Base64.DEFAULT);
                Toast.makeText(pterm.this,temp,Toast.LENGTH_LONG).show();
                BAOS.close();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }
    });

    del.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            canvasView.clearCanvas();
        }
    });

}

当我按下“绘图”按钮时崩溃日志:

  

07-16 12:06:49.447 17910-17910 / com.example.igardini.visualposmobile   E / AndroidRuntime:致命异常:main       流程:com.example.igardini.visualposmobile,PID:17910       java.lang.NullPointerException:尝试调用虚拟方法'boolean   android.graphics.Bitmap.compress(android.graphics.Bitmap $ CompressFormat,   int,java.io.OutputStream)'在空对象引用上           在com.example.igardini.visualposmobile.pterm $ 24.onClick(pterm.java:702)           在android.view.View.performClick(View.java:4781)           在android.view.View $ PerformClick.run(View.java:19874)           在android.os.Handler.handleCallback(Handler.java:739)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:135)           在android.app.ActivityThread.main(ActivityThread.java:5290)           在java.lang.reflect.Method.invoke(本机方法)           在java.lang.reflect.Method.invoke(Method.java:372)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:911)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)

0 个答案:

没有答案