之前没有使用过这个,现在使用JBarcode生成商品条形码,工作之前的准备工作:

Eclipse:

Eclipse Java EE IDE for Web Developers.

Version: Helios Service Release 1

Build id: 20100917-0705

jar包:

JBarcode-Recognition_Source-0.2.jar

jbarcode-0.2.8.jar

commons-lang-2.6.jar

首先了解EAN-13码的规则:

然后大家去了解一下这些数字的排列:

13位条形码分位处理就看出来,这些都需要自己加工处理并做截取处理,可以了解条形码每个段位表达的意思。

知道这些就已经足够我们去做一个条形码的校验工作以及生成自己的条形码。

了解校验码是怎么回事,我们根据我们自己的需求去做,然后根据需求处理一下,就是我们想要的条形码。

校验码生成规则如下:

注意:这里的校验码,如果减掉后的C的结果为0或者10,那么最后一位的校验码就是0

现在是不是对JBarcode越来越感兴趣了呢,流程是很简单的。

明天小媳妇的巧克力就到了,加油写代码为了小媳妇的巧克力。,,,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258package com.liuyc.test.demo;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

import org.jbarcode.JBarcode;

import org.jbarcode.encode.EAN13Encoder;

import org.jbarcode.paint.EAN13TextPainter;

import org.jbarcode.paint.WideRatioCodedPainter;

import org.jbarcode.paint.WidthCodedPainter;

import org.jbarcode.util.ImageUtil;

/**

*

* @=============================================

*

* @author : Liuyc

* @create : 2015年1月26日 14:47:57

* @update :

* @E-mail : 763999883@qq.com

* @desc :

*

* @=============================================

*/

public class BarCodeImage {

/**

* 图片类型

*/

public enum ImgType {

/**

* 图片格式:.gif

*/

GIF(".gif"),

/**

* 图片格式:.png

*/

PNG(".png"),

/**

* 图片格式:.jpg

*/

JPG(".jpg"),

/**

* 图片格式:.jpeg

*/

JPEG(".jpeg"), ;

ImgType(String value) {

this.value = value;

}

private final String value;

public String getValue() {

return value;

}

}

/**

* 生成商品条形码

*

* @param filePath

*            商品条形码图片存放路径:../xxx/yyy/

* @param jbarCode

*            商品条形码:8位、13位

* @param format

*            商品条形码图片格式:.gif/.png/.jpg/.jpeg

* @return 图片存放路径+图片名称+图片文件类型

*/

public String createBarCode(String filePath, String jbarCode, String format) {

String barCodeName = jbarCode + format;

try {

BufferedImage bi =null;

int len = jbarCode.length();

String barCode = jbarCode;

if (len ==12) {

}else if (len ==13) {

int backCode = checkCode(jbarCode);

int oldCode = Integer

.parseInt(jbarCode.substring(len -1, len));

if (oldCode != backCode) {

return null;

}

barCode = jbarCode.substring(0, jbarCode.length() -1);

}

JBarcode localJBarcode13 =new JBarcode(EAN13Encoder.getInstance(),

WidthCodedPainter.getInstance(),

EAN13TextPainter.getInstance());

bi = localJBarcode13.createBarcode(barCode);

if (ImgType.GIF.equals(format)) {

saveToGIF(bi, filePath, barCodeName);

}else if (ImgType.PNG.equals(format)) {

saveToPNG(bi, filePath, barCodeName);

}else if (ImgType.JPG.equals(format) || ImgType.JPEG.equals(format)) {

saveToJPEG(bi, filePath, barCodeName);

}

localJBarcode13.setEncoder(EAN13Encoder.getInstance());

localJBarcode13.setPainter(WideRatioCodedPainter.getInstance());

localJBarcode13.setTextPainter(EAN13TextPainter.getInstance());

localJBarcode13.setShowCheckDigit(false);

return filePath + barCodeName;

}catch (Exception localException) {

localException.printStackTrace();

return null;

}

}

/**

* 生成JPEG图片

*

* @param paramBufferedImage

* @param paramString

*/

@SuppressWarnings("unused")

private void saveToJPEG(BufferedImage paramBufferedImage, String filePath,

String fileName) {

saveToFile(paramBufferedImage, filePath, fileName,"jpeg");

}

/**

* 生成PNG图片

*

* @param paramBufferedImage

* @param paramString

*/

@SuppressWarnings("unused")

private void saveToPNG(BufferedImage paramBufferedImage, String filePath,

String fileName) {

saveToFile(paramBufferedImage, filePath, fileName,"png");

}

/**

* 生成GIF图片

*

* @param paramBufferedImage

* @param paramString

*/

private void saveToGIF(BufferedImage paramBufferedImage, String filePath,

String fileName) {

saveToFile(paramBufferedImage, filePath, fileName,"gif");

}

/**

* 保存图片文件

*

* @param paramBufferedImage

*            图片流

* @param filePath

*            文件路径

* @param imgName

*            图片参数

* @param imgFormat

*            图片格式

*/

private void saveToFile(BufferedImage paramBufferedImage, String filePath,

String imgName, String imgFormat) {

try {

FileOutputStream fileOutputStream =null;

try {

String rootPath =this.getClass().getClassLoader()

.getResource("/").getPath();

String imgDir = StringUtils

.substringBefore(rootPath,"WEB-INF").concat(filePath);

String dirPath ="";

try {

dirPath = URLDecoder.decode(imgDir,"UTF-8");

}catch (UnsupportedEncodingException uee) {

uee.printStackTrace();

}

File dirFile =new File(dirPath);

if (!dirFile.exists()) {

dirFile.mkdirs();

}

String imgPath = dirPath +"/" + imgName;

fileOutputStream =new FileOutputStream(imgPath);

}catch (Exception e) {

System.out.println("Create Img File Error:" + e.toString());

}

ImageUtil.encodeAndWrite(paramBufferedImage, imgFormat,

fileOutputStream,96,96);

fileOutputStream.close();

}catch (Exception localException) {

System.out.println("Save Img File Error:" + localException);

localException.printStackTrace();

}

}

/**

* 返回校验码

*

* @param code

*            商品条形码

* @return 校验码: -1:格式不正确,条形码为全部数字 -2:参数不能为空

*

*/

private int checkCode(String code) {

int checkCode = -1;

if (code ==null ||"".equals(code)) {

return -2;

}else if (!Pattern.compile("^[0-9]*$").matcher(code).matches()) {

checkCode = -1;

}else {

try {

int evensum =0;// 偶数位的和

int oddsum =0;// 奇数位的和

evensum += Integer.parseInt(code.substring(11,12));

evensum += Integer.parseInt(code.substring(9,10));

evensum += Integer.parseInt(code.substring(7,8));

evensum += Integer.parseInt(code.substring(5,6));

evensum += Integer.parseInt(code.substring(3,4));

evensum += Integer.parseInt(code.substring(1,2));

evensum *=3;

oddsum += Integer.parseInt(code.substring(10,11));

oddsum += Integer.parseInt(code.substring(8,9));

oddsum += Integer.parseInt(code.substring(6,7));

oddsum += Integer.parseInt(code.substring(4,5));

oddsum += Integer.parseInt(code.substring(2,3));

oddsum += Integer.parseInt(code.substring(0,1));

int sum = evensum + oddsum;

int ck =0;

if (sum %10 ==0) {

ck = sum;

}else {

ck = (sum /10 +1) *10;

}

checkCode = ck - sum;

}catch (NumberFormatException e) {

System.out.println("BarCode Format Error:" + e.toString());

}catch (Exception e) {

System.out.println("Get Check Code Error:" + e.toString());

}

}

return checkCode;

}

/**

* @param args

*/

public static void main(String[] args) {

}

}

java生成条码_Java生成商品条形码相关推荐

  1. java项目生成多个条码_java – 生成随机条形码 – 一个设计问题

    我正在修复生成条形码的java代码中的错误(线程问题).根据设计,条形码只是一个数字,下一个"未使用"条形码是序列中的下一个.有990亿可能的数字. 首先,由于安全问题,我不喜欢自 ...

  2. java 自动生成条形码_JAVA生成商品条形码

    1.[代码][Java]代码 /* 2. * To change this template, choose Tools | Templates 3. * and open the template ...

  3. java库存导出_java生成导出excle文件

    public void getExportExcle(List< Object > list,HttpServletResponse response) throws Unsupporte ...

  4. java给定任意_java生成任意整数随机数(任意指定范围)

    Math.random() jdk1.8文档描述: 1.求:范围为 [ 0 ,352324 ] 之间的随机数.(包括临界值) (int)( Math.random () * ( 352324 +1) ...

  5. java 单开程序_java生成jar包并且单进程运行的实例

    java文件打包jar运行 有效步骤: 1.cmd 到当前目录(默认包主类所在目录为例) set classpath = 默认包主类所在目录 2.javac 主类名.java 3.java 主类名 4 ...

  6. java生成密码_java生成密码生成 | 学步园

    一.根据当前日期生成MD5加密密码 package com.test; import java.security.MessageDigest; import java.text.SimpleDateF ...

  7. java随机姓名_Java生成随机姓名、性别和年龄的实现示例

    一.定义实体类Person,封装生成的数据 package net.dc.test; public class Person { private String name; private String ...

  8. java 日期随机数_Java 生成指定时间范围的随机时间、随机中文姓名、随机字符姓名、随机数...

    解决问题: Java生成指定时间范围的随机时间? Java生成随机中文姓名? Java生成随机字符姓名? Java生成随机数? 代码: import java.io.UnsupportedEncodi ...

  9. java 生成随机数_Java 生成随机数的 N 种方法

    原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...

最新文章

  1. c语言一个偶数用两个素数表示,用java怎样编写一个偶数总能表示为两个素数之和的程序...
  2. 苹果地图副总裁_也许,苹果汽车的到来只是早晚问题
  3. 【HeadFirst 设计模式学习笔记】6 命令模式
  4. oracle record is locked by another user
  5. MySQL工作中的实际用_数据库在工作中的应用,以及什么是MySQL?
  6. 一个简单的动态web服务器
  7. Bootstrap学习笔记(一)
  8. ASP.NET本质论阅读----应用程序对象
  9. 监听关闭页面事件 ajax,Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
  10. 【机器学习】【计算机视觉】非常全面的图像数据集《Actions》
  11. 【路径规划】基于matlab GUI多种蚁群算法栅格地图路径规划【含Matlab源码 650期】
  12. 微信小程序 访问locolhost_微信小程序 数据访问实例详解
  13. 利用极小极大搜索和alpha-beta剪枝算法预测五子棋对弈落子
  14. PLC控制系统接地要求
  15. WebForm网站和MVC网站运行机制的区别
  16. 秋姑娘_我爱秋天作文300字
  17. 微信小程序之 获取input框输入值
  18. matlab 一维数组 切片,三维体切片图 - MATLAB slice - MathWorks 中国
  19. 1141E - Superhero Battle(数学思维) Codeforces Round #547 (Div. 3)
  20. multisim怎么新建窗口?multisim新建窗口方法

热门文章

  1. 计算机自带的加密,加密,详细教您如何用自带Bitlocker来为电脑磁盘加密
  2. Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)
  3. 一种基于时间滑动窗口的黑产团伙挖掘算法
  4. 算法53----换钱的最小次数和方法数【动态规划】
  5. 2018蓝桥杯 题解
  6. 编程java好学吗,java初级编程好学吗
  7. flink cdc 2.2.1 mysql connector
  8. 使用python中tkinter库显示图片点击按钮跳跳下一张图片
  9. vc2010下调用miniblink控件实现浏览器简单实例
  10. 计算机桌面锁屏设置,怎么设置电脑锁屏