Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
rs-cloud-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周健威
rs-cloud-platform
Commits
2512298a
Commit
2512298a
authored
Jan 12, 2021
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改代码
parent
65ff1571
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
142 additions
and
2 deletions
+142
-2
ImageWatermarkUtil.java
...pyuns/platform/rs/universal/utils/ImageWatermarkUtil.java
+137
-0
UploadController.java
...ns/platform/rs/universal/controller/UploadController.java
+1
-0
UploadService.java
...m/upyuns/platform/rs/universal/service/UploadService.java
+4
-2
No files found.
rs-universal/rs-universal-api/src/main/java/com/upyuns/platform/rs/universal/utils/ImageWatermarkUtil.java
0 → 100644
View file @
2512298a
package
com
.
upyuns
.
platform
.
rs
.
universal
.
utils
;
import
java.awt.AlphaComposite
;
import
java.awt.Color
;
import
java.awt.Font
;
import
java.awt.Graphics2D
;
import
java.awt.Image
;
import
java.awt.RenderingHints
;
import
java.awt.image.BufferedImage
;
import
java.io.*
;
import
javax.imageio.ImageIO
;
/**
*
* @Title ImageWatermarkUtil
* @Description
* @author Zheng.Zeng
* @date 2018年8月29日 下午4:47:38
*/
public
class
ImageWatermarkUtil
{
// 水印透明度
private
static
float
alpha
=
0.5f
;
// 水印文字大小
public
static
final
int
FONT_SIZE
=
28
;
// 水印文字字体
private
static
Font
font
=
new
Font
(
"微软雅黑"
,
Font
.
BOLD
,
FONT_SIZE
);
// 水印文字颜色
private
static
Color
color
=
Color
.
white
;
// 水印之间的间隔
private
static
final
int
XMOVE
=
80
;
// 水印之间的间隔
private
static
final
int
YMOVE
=
80
;
/**
* 获取文本长度。汉字为1:1,英文和数字为2:1
*/
private
static
int
getTextLength
(
String
text
)
{
int
length
=
text
.
length
();
for
(
int
i
=
0
;
i
<
text
.
length
();
i
++)
{
String
s
=
String
.
valueOf
(
text
.
charAt
(
i
));
if
(
s
.
getBytes
().
length
>
1
)
{
length
++;
}
}
length
=
length
%
2
==
0
?
length
/
2
:
length
/
2
+
1
;
return
length
;
}
/**
* 给图片添加水印文字
*
* @param logoText 水印文字
* @param srcImgPath 源图片路径
* @param targerPath 目标图片路径
*/
public
static
void
ImageByText
(
String
logoText
,
String
srcImgPath
,
String
targerPath
)
throws
IOException
{
Image
srcImg
=
ImageIO
.
read
(
new
File
(
srcImgPath
));
ImageByText
(
logoText
,
srcImg
,
targerPath
,
null
);
}
/**
* 给图片添加水印文字、可设置水印文字的旋转角度
*
* @param logoText
// * @param srcImgPath
* @param srcImg
* @param targerPath
* @param degree
*/
public
static
void
ImageByText
(
String
logoText
,
Image
srcImg
,
String
targerPath
,
Integer
degree
)
{
InputStream
is
=
null
;
OutputStream
os
=
null
;
try
{
// 源图片
//Image srcImg = ImageIO.read (new File (srcImgPath));
int
width
=
srcImg
.
getWidth
(
null
);
// 原图宽度
int
height
=
srcImg
.
getHeight
(
null
);
// 原图高度
BufferedImage
buffImg
=
new
BufferedImage
(
srcImg
.
getWidth
(
null
),
srcImg
.
getHeight
(
null
),
BufferedImage
.
TYPE_INT_RGB
);
// 得到画笔对象
Graphics2D
g
=
buffImg
.
createGraphics
();
// 设置对线段的锯齿状边缘处理
g
.
setRenderingHint
(
RenderingHints
.
KEY_INTERPOLATION
,
RenderingHints
.
VALUE_INTERPOLATION_BILINEAR
);
g
.
drawImage
(
srcImg
.
getScaledInstance
(
srcImg
.
getWidth
(
null
),
srcImg
.
getHeight
(
null
),
Image
.
SCALE_SMOOTH
),
0
,
0
,
null
);
// 设置水印旋转
if
(
null
!=
degree
)
{
g
.
rotate
(
Math
.
toRadians
(
degree
),
(
double
)
buffImg
.
getWidth
()
/
2
,
(
double
)
buffImg
.
getHeight
()
/
2
);
}
// 设置水印文字颜色
g
.
setColor
(
color
);
// 设置水印文字Font
g
.
setFont
(
font
);
// 设置水印文字透明度
g
.
setComposite
(
AlphaComposite
.
getInstance
(
AlphaComposite
.
SRC_ATOP
,
alpha
));
int
x
=
-
width
/
2
;
int
y
=
-
height
/
2
;
int
markWidth
=
FONT_SIZE
*
getTextLength
(
logoText
);
// 字体长度
int
markHeight
=
FONT_SIZE
;
// 字体高度
// 循环添加水印
while
(
x
<
width
*
1.5
)
{
y
=
-
height
/
2
;
while
(
y
<
height
*
1.5
)
{
g
.
drawString
(
logoText
,
x
,
y
);
y
+=
markHeight
+
YMOVE
;
}
x
+=
markWidth
+
XMOVE
;
}
// 释放资源
g
.
dispose
();
// 生成图片
os
=
new
FileOutputStream
(
targerPath
);
ImageIO
.
write
(
buffImg
,
"JPG"
,
os
);
System
.
out
.
println
(
"添加水印文字成功!"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
null
!=
is
)
is
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
try
{
if
(
null
!=
os
)
os
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
\ No newline at end of file
rs-universal/rs-universal-server/src/main/java/com/upyuns/platform/rs/universal/controller/UploadController.java
View file @
2512298a
...
...
@@ -60,6 +60,7 @@ public class UploadController{
private
Float
scaleHight
=
320
f
;
private
Color
color
=
Color
.
WHITE
;
private
Integer
colorNum
;
private
Integer
degree
=
-
40
;
public
void
setColorNum
(
Integer
colorNum
)
{
this
.
colorNum
=
colorNum
;
...
...
rs-universal/rs-universal-server/src/main/java/com/upyuns/platform/rs/universal/service/UploadService.java
View file @
2512298a
...
...
@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import
com.github.wxiaoqi.security.common.util.process.SystemConfig
;
import
com.upyuns.platform.rs.universal.constant.RedisKey
;
import
com.upyuns.platform.rs.universal.controller.UploadController
;
import
com.upyuns.platform.rs.universal.utils.ImageWatermarkUtil
;
import
com.upyuns.platform.rs.universal.utils.ImgBase64Util
;
import
org.apache.commons.io.FileUtils
;
import
org.joda.time.DateTime
;
...
...
@@ -93,10 +94,11 @@ public class UploadService {
Image
newImage
=
ImgUtil
.
scale
(
bufferedImage
,
scale
);
//加水印
Font
font
=
new
Font
(
dto
.
getStyleName
(),
dto
.
getStyle
(),
dto
.
getSize
());
Image
newImage2
=
ImgUtil
.
pressText
(
newImage
,
dto
.
getContext
(),
dto
.
getColor
(),
font
,
dto
.
getX
(),
dto
.
getY
(),
dto
.
getAlpha
());
//
Image newImage2 = ImgUtil.pressText(newImage, dto.getContext(), dto.getColor(), font, dto.getX(), dto.getY(), dto.getAlpha());
//将文件写入指定位置
ImgUtil
.
write
(
newImage2
,
new
File
(
filePath
));
//ImgUtil.write(newImage2, new File(filePath));
ImageWatermarkUtil
.
ImageByText
(
dto
.
getContext
(),
newImage
,
filePath
,
dto
.
getDegree
());
//将文件写入指定位置
//FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath));
...
...
Write
Preview
Markdown
is supported
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