我的目标:生成PDF417格式的二维条码并在我的应用程序中的ImageView中显示它。
我使用的是ZXing2.1库的core.jar和j2se.jar。
以下代码尝试创建条形码并将其显示在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集成的,并不满足我的具体问题。如果它没有引起我的注意,请将我重定向到适当的解决方案。
此外,我想知道一种处理这个问题的优雅方法。
答案 0 :(得分:2)
整个java.awt。*框架不是Android SDK的一部分, 包括BufferedImage,因此不受模拟器或 物理设备。 Android有自己的加载和实现 渲染图形。
至于问题refer here的解决方案..它使用Bitmap类来帮助创建条形码..
希望这会有所帮助......