import android.graphics.Bitmap;

import android.graphics.Color;

public class CodeCreater128C {

/** * 生成Code128C格式条形码(纯数字,偶数位长度) * *@param content 条码内容(偶数位纯数字内容) *@param widthScale(1-10, 默认2,) *@param height 条码高度(40-200,默认100) *@return */

public static Bitmap create128CBitmap(String content, int widthScale, int height) {

if (content == null || content.length() == 0) {

return null;

}

if (height<40||height>200) {

height = 100;

}

if ((content.length() % 2) == 1) {

return null;

}

for (int i = 0; i < content.length(); i++) {

char charFlag = content.charAt(i);

if (charFlag > 57 || charFlag < 48) {

return null;

}

}

String text = CodeSymbol128C.SYMBOL_START_C.getSymbolValue(); // 获取开始位

int examine = 105;

int count = 0;

while (content.length() != 0) {

int tempValue = Integer.valueOf(content.subSequence(0, 2).toString());

text += CodeSymbol128C.getTargetSymbolValue(tempValue);

examine += tempValue * ++count;

content = content.substring(2);

}

examine = examine % 103; // 获得严效位

text += CodeSymbol128C.getTargetSymbolValue(examine); // 获取严效位

text += CodeSymbol128C.SYMBOL_STOP.getSymbolValue(); // 结束位

return getImageFrom128CSymbols(text, widthScale, height);

}

private static Bitmap getImageFrom128CSymbols(String symbolsStr, int barSizeScale, int bitmapHeight) {

if (barSizeScale < 1 || barSizeScale > 8) {

barSizeScale = 2;

}

byte[] symbols = symbolsStr.getBytes();

int width = 0;

for (int i = 0; i < symbols.length; i++) {

width += (symbols[i] - 48) * barSizeScale;

}

Bitmap barCodeBitmap = Bitmap.createBitmap(width, bitmapHeight, Bitmap.Config.ARGB_8888);

int offset = 0;

for (int i = 0; i < symbols.length; i++) {

int barElementWidth = (symbols[i] - 48) * barSizeScale; // 获取元素宽度

if (!((i & 1) == 0)) { // 偶数位

for (int j = 0; j < barElementWidth; j++) {

// 图元列循环

for (int k = 0; k < bitmapHeight; k++) {

// 图元列像素循环

barCodeBitmap.setPixel((offset + j), k, Color.WHITE);

}

}

} else {

// 奇数位

for (int j = 0; j < barElementWidth; j++) {

// 图元列循环

for (int k = 0; k < bitmapHeight; k++) {

// 图元列像素循环

barCodeBitmap.setPixel((offset + j), k, Color.BLACK);

}

}

}

// _Garphics.(_Pen, new Point(_LenEx, 0), new Point(_LenEx,

// m_Height));

offset += barElementWidth;

}

return barCodeBitmap;

}

private enum CodeSymbol128C {

SYMBOL_00(0, "212222"),

SYMBOL_01(1, "222122"),

SYMBOL_02(2, "222221"),

SYMBOL_03(3, "121223"),

SYMBOL_04(4, "121322"),

SYMBOL_05(5, "131222"),

SYMBOL_06(6, "122213"),

SYMBOL_07(7, "122312"),

SYMBOL_08(8, "132212"),

SYMBOL_09(9, "221213"),

SYMBOL_10(10, "221312"),

SYMBOL_11(11, "231212"),

SYMBOL_12(12, "112232"),

SYMBOL_13(13, "122132"),

SYMBOL_14(14, "122231"),

SYMBOL_15(15, "113222"),

SYMBOL_16(16, "123122"),

SYMBOL_17(17, "123221"),

SYMBOL_18(18, "223211"),

SYMBOL_19(19, "221132"),

SYMBOL_20(20, "221231"),

SYMBOL_21(21, "213212"),

SYMBOL_22(22, "223112"),

SYMBOL_23(23, "312131"),

SYMBOL_24(24, "311222"),

SYMBOL_25(25, "321122"),

SYMBOL_26(26, "321221"),

SYMBOL_27(27, "312212"),

SYMBOL_28(28, "322112"),

SYMBOL_29(29, "322211"),

SYMBOL_30(30, "212123"),

SYMBOL_31(31, "212321"),

SYMBOL_32(32, "232121"),

SYMBOL_33(33, "111323"),

SYMBOL_34(34, "131123"),

SYMBOL_35(35, "131321"),

SYMBOL_36(36, "112313"),

SYMBOL_37(37, "132113"),

SYMBOL_38(38, "132311"),

SYMBOL_39(39, "211313"),

SYMBOL_40(40, "231113"),

SYMBOL_41(41, "231311"),

SYMBOL_42(42, "112133"),

SYMBOL_43(43, "112331"),

SYMBOL_44(44, "132131"),

SYMBOL_45(45, "113123"),

SYMBOL_46(46, "113321"),

SYMBOL_47(47, "133121"),

SYMBOL_48(48, "313121"),

SYMBOL_49(49, "211331"),

SYMBOL_50(50, "231131"),

SYMBOL_51(51, "213113"),

SYMBOL_52(52, "213311"),

SYMBOL_53(53, "213131"),

SYMBOL_54(54, "311123"),

SYMBOL_55(55, "311321"),

SYMBOL_56(56, "331121"),

SYMBOL_57(57, "312113"),

SYMBOL_58(58, "312311"),

SYMBOL_59(59, "332111"),

SYMBOL_60(60, "314111"),

SYMBOL_61(61, "221411"),

SYMBOL_62(62, "431111"),

SYMBOL_63(63, "111224"),

SYMBOL_64(64, "111422"),

SYMBOL_65(65, "121124"),

SYMBOL_66(66, "121421"),

SYMBOL_67(67, "141122"),

SYMBOL_68(68, "141221"),

SYMBOL_69(69, "112214"),

SYMBOL_70(70, "112412"),

SYMBOL_71(71, "122114"),

SYMBOL_72(72, "122411"),

SYMBOL_73(73, "142112"),

SYMBOL_74(74, "142211"),

SYMBOL_75(75, "241211"),

SYMBOL_76(76, "221114"),

SYMBOL_77(77, "413111"),

SYMBOL_78(78, "241112"),

SYMBOL_79(79, "134111"),

SYMBOL_80(80, "111242"),

SYMBOL_81(81, "121142"),

SYMBOL_82(82, "121241"),

SYMBOL_83(83, "114212"),

SYMBOL_84(84, "124112"),

SYMBOL_85(85, "124211"),

SYMBOL_86(86, "411212"),

SYMBOL_87(87, "421112"),

SYMBOL_88(88, "421211"),

SYMBOL_89(89, "212141"),

SYMBOL_90(90, "214121"),

SYMBOL_91(91, "412121"),

SYMBOL_92(92, "111143"),

SYMBOL_93(93, "111341"),

SYMBOL_94(94, "131141"),

SYMBOL_95(95, "114113"),

SYMBOL_96(96, "114311"),

SYMBOL_97(97, "411113"),

SYMBOL_98(98, "411311"),

SYMBOL_99(99, "113141"),

// 以下为标志位

SYMBOL_START_A(103, "211412"),

SYMBOL_START_B(104, "211214"),

SYMBOL_START_C(105, "211232"),

SYMBOL_STOP(106, "2331112");

private int codeValue;

private String symbolValue;

private CodeSymbol128C(int codeValue, String symbolValue) {

this.codeValue = codeValue;

this.symbolValue = symbolValue;

}

public String getSymbolValue() {

return this.symbolValue;

}

public static String getTargetSymbolValue(int codeValue) {

return CodeSymbol128C.valueOf("SYMBOL_" + (codeValue < 10 ? "0" : "") + codeValue).getSymbolValue();

}

}

}

java 生成 code128_Java如何生成Code128C条形码相关推荐

  1. Java如何生成Code128C条形码

    Code128C条形码介绍 Code128条形码(分为A.B.C三种格式): 具体信息参阅条码标准: Code128C 的优势 Code128C可容纳数据长度与Code128标准一致: Code128 ...

  2. Python生成Code128C条形码实现——轻松打造高效标识码!

    Python生成Code128C条形码实现--轻松打造高效标识码! Code128C是一种数字型条形码,适用于需要大量数字编码的场合.它能够表示1-128个 ASCII 码字符,具有高密度.可靠性强等 ...

  3. Python生成Code128C条形码:打印高效、识别准确

    Python生成Code128C条形码:打印高效.识别准确 在如今这个信息时代,条形码已经成为了生活工作中不可缺少的一部分,而Code128C条形码也是其中的一种常见类型.本文将带您了解如何使用 Py ...

  4. 一句代码生成二维码,一句代码生成条形码,批量生成二维码和条形码,步骤教学

    生产企业或者物流快递需要用到大量的二维码和条形码,但是要自行编写代码批量生成二维码或者条形码并不容易,涉及的知识面很广. Excel插件<E灵>提供了二维码接口和条形码接口,您只需要一句代 ...

  5. java 根据实体对象生成 增删改的SQL语句 ModelToSQL

    2019独角兽企业重金招聘Python工程师标准>>> java 根据实体对象生成 增删改的SQL语句 ModelToSQL 转载于:https://my.oschina.net/m ...

  6. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  7. java读取ES配置生成ES管理类,获取ES连接

    java读取ES配置生成ES管理类,获取ES连接 1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询, ...

  8. Android工程中R.java文件的重新生成——注意资源文件的错误

    一.如果二或三步骤还是不能生成R.java中内容,一般是XML文件有错,或者xml引用的资源文件找不到,用排除法删除xml后执行二或者三的步骤. 二. 在Android中使用开源代码或者自己开发项目的 ...

  9. md文件生成Java代码_Beetlsql自定义生成entity,mapper,md代码

    packagecom.github.tungss.auth;import org.beetl.sql.core.*;import org.beetl.sql.core.db.*;import org. ...

最新文章

  1. oracle 条件动态视图,oracle最重要的9个动态性能视图
  2. linux内核dentry结构学习
  3. Ubuntu系统启动错误问题的解决
  4. I don't have an E-mail 我没邮箱
  5. 五矿期货携手神策数据,深耕数字化 5 大应用,加速金融科技创新增长
  6. 设计模式之模板方法模式实战解析
  7. 并查集——最小连接路径和Kruskal(hdu1301)
  8. Oracle Net Services 配置:Xlib: connection to :0.0 refused by server
  9. 基线是什么意思_CAD都玩不溜,还好意思说自己搞工程的?
  10. How to Create and Drop database in MongoDB
  11. URI和URL的概念和区别
  12. CronTrigger表达式
  13. 汉字编码,GB2312、GB 13000、GBK、GB18030 介绍
  14. O2O优惠券使用预测
  15. 声明式导航与编程式导航
  16. 6篇论文入选NIPS 2018,这位中国小哥的开挂人生
  17. 人民币大小写转换 java 实现
  18. 论坛发贴与跟贴的技巧
  19. Cortex-A55核心板的温升实测!
  20. 计算机硬件配置一般看什么CPU,电脑配置怎么看好坏

热门文章

  1. DeepExploit——当Metasploit遇上机器学习
  2. jsp+ssm企业人事工资管理ssm人事管理系统(源码+文档下载)
  3. 远程控制手机时,解决隐私屏黑屏的问题
  4. 【ASCII】ASCII编码对照表
  5. 第一章 离散随机信号 笔记
  6. 4款最好用的虚拟机软件简介及对比
  7. 镇江首批35名援湖北医疗队员平安归来
  8. 最接近神的人 reverse
  9. Linux初级篇——vi和vim的区别
  10. STM32教程(4)-最小系统的设计