0

ブラックベリー OS 7 で EAN 13 バーコードを生成する際に問題が発生しました。実際にはすでに EAN 13 を生成するコードをいくつか作成しており、シミュレータ 9800 OS 6 では正常に動作していますが、シミュレータ 9900 ダコタ OS 7 ではバーコードがすべて黒くなります。私の問題を解決するのを手伝ってください

ここに私のコード

public void ean13writer(String ang){
    try {
        EAN13Writer ean13 = new EAN13Writer();
        ByteMatrix barcode = ean13.encode( ang , BarcodeFormat.EAN_13 , width , height );
        System.out.println("barcode : "+barcode);

        jajal= ByteMatrix2Bitmap(barcode);
        VerticalFieldManager cardcodemanager = new VerticalFieldManager(){

        };
        Bitmap borderBitmap = Bitmap.getBitmapResource("rounded-border.png");
        BitmapField cardcode = new BitmapField(jajal);

        cardcodemanager.add(cardcode);
        cardcodemanager.setMargin(2, 40, 2, 40);
        cardcodemanager.setPadding(2, 10, 2, 10);
        cardcodemanager.setBorder(
                BorderFactory.createBitmapBorder(
                        new XYEdges(12,12,12,12), borderBitmap
                    )
                );

        cardScreen.add(cardcodemanager);
    }catch (Exception e) {
        //add( new RichTextField( "gagal coy : " + e ) );
        String a = String.valueOf(e).toString();
        Dialog.alert(a);
    }
}
private static Bitmap ByteMatrix2Bitmap(ByteMatrix matrix){
    int width = matrix.getWidth(); 
    int height = matrix.getHeight();
        //matrix is a 0-1 matrix
        byte[][] array = matrix.getArray(); 
        int[] imgdata = new int[width*height];
        Bitmap bitmap  = new Bitmap(width, height); 

        //System.out.println("hasil array byte [] [] ="+matrix.getArray());

        for (int y = 0; y < height; y++) { 
            for (int x = 0; x< width; x++){
                if (array[y][x] == 0){
                        imgdata[y * width + x] = Bitmap.TRUE_WHITE;
                        //System.out.println("KALO 0 = "+imgdata[y * width + x]);
                }else{
                        imgdata[y * width + x] = Bitmap.TRUE_BLACK;
                        //System.out.println("KALO BUKAN = "+imgdata[y * width + x]);
                }
            }
        }
        bitmap.setARGB(imgdata, 0, width, 0, 0, width, height);
        Bitmap retmap = new Bitmap(2*width ,10*height );
        bitmap.scaleInto(retmap, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT);  


        return retmap;  
}

よろしくアディティア・エカ・プトラ

4

1 に答える 1

0

私はすでにこの問題を解決しています:)、問題はBitmap.TRUE_WHITEがos 7では機能しないため、後で誰かを助けることができるので、それを(0xFFFFFF)に置き換えます

于 2013-03-06T06:57:45.163 に答える