Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
c02e5fec
Commit
c02e5fec
authored
Jul 29, 2018
by
Menethil
Browse files
修改分享图的样式
parent
ba507599
Changes
3
Hide whitespace changes
Inline
Side-by-side
litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeService.java
View file @
c02e5fec
...
...
@@ -3,6 +3,7 @@ package org.linlinjava.litemall.core.qcode;
import
cn.binarywang.wx.miniapp.api.WxMaService
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
org.linlinjava.litemall.core.storage.StorageService
;
import
org.linlinjava.litemall.core.system.SystemConfig
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.io.ClassPathResource
;
import
org.springframework.mock.web.MockMultipartFile
;
...
...
@@ -35,8 +36,8 @@ public class QCodeService {
//创建该商品的二维码
File
file
=
wxMaService
.
getQrcodeService
().
createWxaCodeUnlimit
(
goodId
,
"pages/index/index"
);
FileInputStream
inputStream
=
new
FileInputStream
(
file
);
//将商品图片,商品名字画到模版图中
byte
[]
imageData
=
drawPicture
(
inputStream
,
goodPicUrl
,
goodName
);
//将商品图片,商品名字
,商城名字
画到模版图中
byte
[]
imageData
=
drawPicture
(
inputStream
,
goodPicUrl
,
goodName
,
SystemConfig
.
getMallName
()
);
MultipartFile
multipartFile
=
new
MockMultipartFile
(
file
.
getName
(),
file
.
getName
(),
"image/jpeg"
,
imageData
);
//存储分享图
storageService
.
store
(
multipartFile
,
getKeyName
(
goodId
));
...
...
@@ -68,38 +69,38 @@ public class QCodeService {
* @return
* @throws IOException
*/
private
byte
[]
drawPicture
(
InputStream
qrCodeImg
,
String
goodPicUrl
,
String
goodName
)
throws
IOException
,
FontFormatException
{
private
byte
[]
drawPicture
(
InputStream
qrCodeImg
,
String
goodPicUrl
,
String
goodName
,
String
shopName
)
throws
IOException
,
FontFormatException
{
//底图
ClassPathResource
redResource
=
new
ClassPathResource
(
"back.jpg"
);
BufferedImage
red
=
ImageIO
.
read
(
redResource
.
getInputStream
());
//商品图片
URL
avatarUrl
=
new
URL
(
goodPicUrl
);
BufferedImage
goodImage
=
ImageIO
.
read
(
avatarUrl
);
URL
goodPic
=
new
URL
(
goodPicUrl
);
BufferedImage
goodImage
=
ImageIO
.
read
(
goodPic
);
//小程序二维码
// URL qrCodeUrl = new URL(qrCodeImg);
BufferedImage
qrCodeImage
=
ImageIO
.
read
(
qrCodeImg
);
// --- 画图 ---
//底层空白 bufferedImage
BufferedImage
baseImage
=
new
BufferedImage
(
red
.
getWidth
(),
red
.
getHeight
(),
BufferedImage
.
TYPE_4BYTE_ABGR
);
BufferedImage
baseImage
=
new
BufferedImage
(
red
.
getWidth
(),
red
.
getHeight
(),
BufferedImage
.
TYPE_4BYTE_ABGR
_PRE
);
//画上图片
drawImgInImg
(
baseImage
,
red
,
0
,
0
,
red
.
getWidth
(),
red
.
getHeight
());
//画上商品图片
drawImgInImg
(
baseImage
,
goodImage
,
24
,
24
,
520
,
520
);
drawImgInImg
(
baseImage
,
goodImage
,
56
,
135
,
720
,
720
);
//画上小程序二维码
drawImgInImg
(
baseImage
,
qrCodeImage
,
143
,
770
,
280
,
280
);
drawImgInImg
(
baseImage
,
qrCodeImage
,
442
,
1006
,
340
,
340
);
//写上商品名称
drawTextInImg
(
baseImage
,
goodName
,
143
,
614
);
drawTextInImg
(
baseImage
,
goodName
,
112
,
955
);
//写上商城名称
drawTextInImgCenter
(
baseImage
,
shopName
,
112
,
98
);
//转jpg
...
...
@@ -113,6 +114,27 @@ public class QCodeService {
return
bs
.
toByteArray
();
}
private
void
drawTextInImgCenter
(
BufferedImage
baseImage
,
String
textToWrite
,
int
x
,
int
y
)
{
Graphics2D
g2D
=
(
Graphics2D
)
baseImage
.
getGraphics
();
g2D
.
setColor
(
new
Color
(
167
,
136
,
69
));
String
fontName
=
"Microsoft YaHei"
;
Font
f
=
new
Font
(
fontName
,
Font
.
PLAIN
,
42
);
g2D
.
setFont
(
f
);
g2D
.
setRenderingHint
(
RenderingHints
.
KEY_ANTIALIASING
,
RenderingHints
.
VALUE_ANTIALIAS_ON
);
// 计算文字长度,计算居中的x点坐标
FontMetrics
fm
=
g2D
.
getFontMetrics
(
f
);
int
textWidth
=
fm
.
stringWidth
(
textToWrite
);
int
widthX
=
(
baseImage
.
getWidth
()
-
textWidth
)
/
2
;
// 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。
g2D
.
drawString
(
textToWrite
,
widthX
,
100
);
// 释放对象
g2D
.
dispose
();
}
private
void
drawTextInImg
(
BufferedImage
baseImage
,
String
textToWrite
,
int
x
,
int
y
)
throws
IOException
,
FontFormatException
{
Graphics2D
g2D
=
(
Graphics2D
)
baseImage
.
getGraphics
();
g2D
.
setColor
(
new
Color
(
167
,
136
,
69
));
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java
View file @
c02e5fec
...
...
@@ -56,6 +56,10 @@ public class SystemConfig extends BaseConfig {
return
getConfigBigDec
(
PRE_FIX
+
"freight.limit"
);
}
public
static
String
getMallName
()
{
return
getConfig
(
PRE_FIX
+
"mallname"
);
}
@Override
public
String
getPrefix
()
{
return
PRE_FIX
;
...
...
litemall-core/src/main/resources/back.jpg
View replaced file @
ba507599
View file @
c02e5fec
49.4 KB
|
W:
|
H:
72.8 KB
|
W:
|
H:
2-up
Swipe
Onion skin
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment