我的目标:生成PDF417格式的2D条形码并将其显示在我的应用程序的ImageView中。
我使用ZXing2.1库的core.jar和j2se.jar。
Android:创建条形码图像并在图像中显示查看
以下代码尝试创建条码并将其显示在imageView中。
ImageView imageView = (ImageView) findViewById(R.id.imageView);
try {
Writer writer;
BitMatrix bitMatrix = null;
writer = new PDF417Writer();
bitMatrix = writer.encode("123456789", BarcodeFormat.PDF_417, 580, 150);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream);
InputStream decodedInput=new ByteArrayInputStream(((ByteArrayOutputStream) byteArrayOutputStream).toByteArray());
Drawable d = BitmapDrawable.createFromStream(decodedInput, "src");
imageView.setImageDrawable(d);
System.out.println("PDF417 Code Generated.");
} catch (Exception e) {
}
当我执行的代码,我得到这个错误:
07-01 08:42:13.148: ERROR/dalvikvm(1508): Could not find class 'java.awt.image.BufferedImage', referenced from method com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage
07-01 08:42:13.178: ERROR/AndroidRuntime(1508): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: java.awt.image.BufferedImage
at com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(MatrixToImageWriter.java:54)
at com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(MatrixToImageWriter.java:99)
at com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(MatrixToImageWriter.java:91)
at com.example.untitled.MyActivity.onCreate(MyActivity.java:35)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
的原因似乎是显而易见的。但是现在我不知道如何将图像数据写入bitMatrix的流中。
请提出解决方案。如果有的话,我会欣赏指针。
注:我已经经历了很多堆栈溢出解决方案和网络上的。他们中的大多数都是围绕ZXing整合,并不能满足我的具体问题。重定向到适当的解决方案,以防引起我的注意。
另外我想知道一个处理这个问题的优雅方式。
感谢您的参考帮助。我确实找到了解决方案。我想了解使用提示和编码类型。它提供了什么价值?跳过那部分可以吗? –