ean 8:
Sub drawEAN8 (data As String) As Bitmap
Return nativeMe.RunMethod("drawEAN8", Array(data))
End Sub
#If Java
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.content.Context;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
public Bitmap drawEAN8 (String data) {
Bitmap bitmap = encodeAsBitmap(data, 200, 100);
return bitmap;
}
public Bitmap encodeAsBitmap(String text, int width, int height){
text = Ean8CheckSum(text);
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix matrix = null;
try {
matrix = writer.encode(text, BarcodeFormat.EAN_8, width, height);
} catch (WriterException ex) {
ex.printStackTrace();
return null; // Aggiunto per gestire il caso di errore
}
// --- Righe da aggiungere ---
final int TEXT_HEIGHT_MARGIN = 40;
final int TEXT_SIZE = 24;
final int TEXT_PADDING = 5;
int finalHeight = height + TEXT_PADDING + TEXT_HEIGHT_MARGIN;
Bitmap finalBmp = Bitmap.createBitmap(width, finalHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(finalBmp);
canvas.drawColor(Color.WHITE);
// --- Fine righe da aggiungere ---
// Righe esistenti per disegnare il barcode
for (int x = 0; x < width; x++){
for (int y = 0; y < height; y++){
finalBmp.setPixel(x, y, matrix.get(x,y) ? 0xff000000 : 0xffffffff);
}
}
// --- Righe da aggiungere per il testo ---
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(TEXT_SIZE);
paint.setTextAlign(Paint.Align.CENTER);
float xPos = width / 2f;
float yPos = height + TEXT_PADDING + (TEXT_HEIGHT_MARGIN / 2f) + (TEXT_SIZE / 2f);
canvas.drawText(text, xPos, yPos, paint);
return finalBmp;
// --- Fine righe da aggiungere ---
}
// checksum utility
public String Ean8CheckSum(String Str) {
int DigitValue = 0; int CodeLen = Str.length();
int CodeValue[] = new int[CodeLen];
if(CodeLen < 8) {
for(int c = 0; c < CodeLen; c ++) {
CodeValue[c] = Integer.parseInt(Str.substring(c,c+1));
}
int Odd = (CodeValue[0] + CodeValue[2] + CodeValue[4] + CodeValue[6]) * 3;
int Even = CodeValue[1] + CodeValue[3] + CodeValue[5];
DigitValue = ( 10 - ((Odd + Even) % 10) ) % 10;
DigitValue = (DigitValue == 10) ? 0 : DigitValue ;
}
Str = Str + DigitValue;
return Str;
}
#End If
ean 13:
Sub drawEAN13 (data As String) As Bitmap
Return nativeMe.RunMethod("drawEAN13", Array(data))
End Sub
#If Java
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.content.Context;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
public Bitmap drawEAN13 (String data) {
Bitmap bitmap = encodeAsBitmap(data, 250, 100);
return bitmap;
}
public Bitmap encodeAsBitmap(String text, int width, int height){
text = Ean13CheckSum(text);
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix matrix = null;
try {
matrix = writer.encode(text, BarcodeFormat.EAN_13, width, height);
} catch (WriterException ex) {
ex.printStackTrace();
return null; // Aggiunto per gestire il caso di errore
}
// --- Righe da aggiungere ---
final int TEXT_HEIGHT_MARGIN = 40;
final int TEXT_SIZE = 24;
final int TEXT_PADDING = 5;
int finalHeight = height + TEXT_PADDING + TEXT_HEIGHT_MARGIN;
Bitmap finalBmp = Bitmap.createBitmap(width, finalHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(finalBmp);
canvas.drawColor(Color.WHITE);
// --- Fine righe da aggiungere ---
// Righe esistenti per disegnare il barcode
for (int x = 0; x < width; x++){
for (int y = 0; y < height; y++){
finalBmp.setPixel(x, y, matrix.get(x,y) ? 0xff000000 : 0xffffffff);
}
}
// --- Righe da aggiungere per il testo ---
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(TEXT_SIZE);
paint.setTextAlign(Paint.Align.CENTER);
float xPos = width / 2f;
float yPos = height + TEXT_PADDING + (TEXT_HEIGHT_MARGIN / 2f) + (TEXT_SIZE / 2f);
canvas.drawText(text, xPos, yPos, paint);
return finalBmp;
// --- Fine righe da aggiungere ---
}
// checksum utility
public String Ean13CheckSum(String Str) {
int DigitValue = 0; int CodeLen = Str.length();
int CodeValue[] = new int[CodeLen];
if(CodeLen < 13) {
for(int c = 0; c < CodeLen; c ++) {
CodeValue[c] = Integer.parseInt(Str.substring(c,c+1));
}
int Even = CodeValue[0] + CodeValue[2] + CodeValue[4] + CodeValue[6] + CodeValue[8] + CodeValue[10];
int Odd = (CodeValue[1] + CodeValue[3] + CodeValue[5] + CodeValue[7] + CodeValue[9] + CodeValue[11]) * 3;
int Sum = Odd + Even;
DigitValue = 10 - (Sum % 10);
DigitValue = (DigitValue == 10) ? 0 : DigitValue;
}
Str = Str + DigitValue;
return Str;
}
#End If