天天看點

Java編寫(模仿51CTO 給圖檔加上水印)--原創

代碼很簡單,沒有什麼新意!就是利用JDK做的簡單繪圖和變換!

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

<code>package</code> <code>com.oracle.day16;</code>

<code>import</code> <code>java.awt.Color;</code>

<code>import</code> <code>java.awt.Font;</code>

<code>import</code> <code>java.awt.Graphics2D;</code>

<code>import</code> <code>java.awt.RenderingHints;</code>

<code>import</code> <code>java.awt.font.FontRenderContext;</code>

<code>import</code> <code>java.awt.geom.Rectangle2D;</code>

<code>import</code> <code>java.awt.image.BufferedImage;</code>

<code>import</code> <code>java.io.File;</code>

<code>import</code> <code>java.io.IOException;</code>

<code>import</code> <code>javax.imageio.ImageIO;</code>

<code>/**</code>

<code> </code><code>*</code>

<code> </code><code>*@author huyongjian Oracle(Compus Solution Group)</code>

<code> </code><code>* @Date  2013-8-16</code>

<code> </code><code>* @version 2.0</code>

<code> </code><code>* @since JDK1.6(建議)</code>

<code>   </code><code>Copy Right Information    COMPUS SOLUTION GROUP</code>

<code>   </code><code>IDE:Eclipse</code>

<code>   </code><code>class:</code>

<code>   </code><code>列印生成jpg圖檔生成文字水印</code>

<code>      </code><code>JDK2D02</code>

<code> </code><code>*/</code>

<code>public</code> <code>class</code> <code>TestJdk2D02 {</code>

<code>    </code><code>public</code> <code>String create(String str,String filePath,</code>

<code>            </code><code>int</code> <code>width,</code><code>int</code> <code>height){</code>

<code>        </code><code>String fileName=System.currentTimeMillis()+</code><code>".jpg"</code><code>;</code>

<code>        </code><code>String path=filePath+</code><code>"/"</code><code>+fileName;</code>

<code>        </code><code>File file=</code><code>new</code> <code>File(path);</code>

<code>        </code><code>BufferedImage bi=</code><code>new</code> <code>BufferedImage(width,height,</code>

<code>                </code><code>BufferedImage.TYPE_INT_RGB);</code>

<code>        </code><code>Graphics2D g2=(Graphics2D) bi.getGraphics();</code>

<code>        </code><code>g2.setColor.WHITE);</code>

<code>         </code><code>g2.clearRect(</code><code>0</code><code>, </code><code>0</code><code>, width, height);</code>

<code>        </code><code>Font font=</code><code>new</code> <code>Font(</code><code>"黑體"</code><code>,Font.BOLD,</code><code>25</code><code>);</code>

<code>        </code><code>g2.setFont(font);</code>

<code>        </code><code>g2.setPaint(Color.RED);</code>

<code>        </code><code>FontRenderContext context=g2.getFontRenderContext();</code>

<code>        </code><code>Rectangle2D bounds=font.getStringBounds(str, context);</code>

<code>        </code><code>double</code> <code>x=(width-bounds.getWidth())/</code><code>2</code><code>;</code>

<code>        </code><code>double</code> <code>y=(height-bounds.getHeight())/</code><code>2</code><code>;</code>

<code>        </code><code>double</code> <code>ascent=-bounds.getY();</code>

<code>        </code><code>double</code> <code>baseY=y+ascent;</code>

<code>                                      </code> 

<code>        </code><code>g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,</code>

<code>                </code><code>RenderingHints.VALUE_TEXT_ANTIALIAS_ON);</code>

<code>        </code><code>g2.drawString(str, (</code><code>int</code><code>)x, (</code><code>int</code><code>)baseY);</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>ImageIO.write(bi, </code><code>"jpg"</code><code>, file);</code>

<code>        </code><code>} </code><code>catch</code> <code>(IOException e) {</code>

<code>            </code><code>e.printStackTrace();</code>

<code>        </code><code>}</code>

<code>        </code><code>return</code> <code>file.getPath();</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>TestJdk2D02 t=  </code><code>new</code> <code>TestJdk2D02();</code>

<code>        </code><code>System.out.println(t.create(</code><code>"小夜的傳說"</code><code>,</code><code>"c:/"</code><code>,</code><code>500</code><code>,</code><code>38</code><code>));</code>

<code>}</code>

運作之後在您的C槽中可以檢視生成圖檔的水印!

群号:1936625305 Java程式員聯盟 歡迎大家的加入!

<a target="_blank" href="http://blog.51cto.com/attachment/201308/173223831.jpg"></a>

本文轉自 小夜的傳說 51CTO部落格,原文連結:http://blog.51cto.com/1936625305/1282136,如需轉載請自行聯系原作者