Archive

‘JAVA’ 分類過的Archive

如何合併兩張圖加淡化效果 For Java

2009年2月4日 尚無評論

最近想可否自動加上一些浮水印的效果
平常很少用程式來進行影像處理,

參考了java合并图片 – Ivan Zhang's 弹丸之地 – CSDNBlog ,發現Java實作還真容易
怪不得Java可以成為目前的主流程式語言之一。

小弟加以調整,把小圖淡化合併於左下角,感覺會有點浮水印的效果,近幾年這種效果蠻討喜的

以下這是原圖,就去網路找最近家中在看的韓劇「愛情殺手吳水晶」的圖片:

用戶插入圖片

然後要合併的,就拿Keroro軍曹來吧,會比較討喜點:

用戶插入圖片

程式如下:

import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class DrawImage{
   public static void main(String[] args) throws Exception{
       InputStream imagein=new FileInputStream(“c:\\test\\a.jpg”);
       InputStream imagein2=new FileInputStream(“d:\\test\\b.gif”);
       BufferedImage image=ImageIO.read(imagein);
       BufferedImage image2=ImageIO.read(imagein2);
       Graphics2D g = image.createGraphics();
       g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f));
       g.drawImage(image2,image.getWidth()-image2.getWidth(),image.getHeight()-image2.getHeight(),null);
       OutputStream out=new FileOutputStream(“c:\\test\\ok.jpg”);
       JPEGImageEncoder enc=JPEGCodec.createJPEGEncoder(out);
       enc.encode(image);
       imagein.close();
       imagein2.close();
       out.close();
   }
}


合併後如下:

用戶插入圖片

很容易吧,幾行程式就可以有這樣的效果真是不錯!!

以上圖片引用,謝謝不知名網站借來學習!

Categories: JAVA Tags: , ,

排序Vector for Java

2009年1月19日 尚無評論

這次是說的是如何將Vector進行排序

先前大致瞭解Java2本身有提供排序功能,但通常都在寫資料庫的程式
只要是資料排序,一般都在資料庫裡做掉了
很少很少需要在程式進行排序,剛好最近有study一下
寫上來與大家分享..^^

JAVA很簡單,只要是implement List,就可以透過Collections就可以排序啦
以下範例就是一個很簡單的排序:

       Vector v = new Vector();

       v.add(“anupama”);
       v.add(“jyothi”);
       v.add(“durga”);
       v.add(“vaseef”);
       v.add(“priya”);

       Collections.sort(v);

       System.out.println(“Vector elements after sorting : “);
       for(int i=0; i<v.size(); i++)
       System.out.println(v.get(i));

而如果Vector存入的不是字串這種單純的物件呢?
Collections可以透過實作Comparator來進行排序

以下就是要針對GoodItem的某一屬性進行比較排序,所以實作Comparator的compare即可
當比較大時就回傳1,反之就回傳-1:

public class PitemSort implements Comparator{
       public int compare(Object obj1, Object obj2){
           GoodItem o1=(GoodItem) obj1;
           GoodItem o2=(GoodItem) obj2;

           if(o1.getPrice()>o2.getPrice()){
               return 1;
           }
           if(o1.getPrice()<o2.getPrice()){
               return -1;
           }
           return 0;
       }
   }

而要使用時,只要import進行在sort時,指定要以實作的Comparator進行排序即可,範例指令如下: 

      Collections.sort(v, new PitemSort());

如此一來,就可以很簡單進行排序啦,不用再自己寫排序方法啦,而Collections非常的彈性,如果要進行
複雜的排序,應該都可以達到,今天就先講簡單的就好!有需要請自行去查API囉!!

參考資料:
http://www.programmersheaven.com/mb/java/381483/381921/re-sorting-in-vector/?S=B20000

Categories: JAVA Tags: , ,

jQuery ajax使用在JAVA注意事項 – 編碼問題

2009年1月18日 2 則評論

今天花了一些時間在排除一個怪現象
因為覺得很奇特,所以特別寫上註記一下
給自己加深印象,也給可能會遇到的人參考一下

就是今天在撰寫程式利用jQuery的ajax 向另一隻程式要資料
寫法都沒有問題,但就是會出現ajax Error

初步排除法:
1.先確認程式是否無誤
2.再確認編碼是否為utf8
3.再確認回傳參數是否符合格式 (今天是使用json)

都確認過了,但就還是失敗
所以先把資料頁存成htm的方式試試
怪了,竟然成功了說 =.=|||

再仔細確認剛剛檢查的步驟,每一項都正確但只要換成JSP
就會失敗…最後發現問題點在

<%@ page contentType=”text/html; charset=UTF8″ %>

要調整為以下才行

<%@ page contentType=”text/html; charset=UTF-8” %>

怪吧! 瀏覽器兩者都認為是UTF-8的格式,但jQuery似乎比較挑一點
一定要寫UTF-8才行..@@ (又不知死了多少腦細胞了..)

Categories: JAVA Tags: ,

String format

2008年9月8日 尚無評論

JDK1.5版之後String 有提供一個format格式,很像c的printf 功能,蠻不錯用的

String.format(String format, Object… args)
String.format(Locale l, String format, Object… args)
   可傳入指定的語言環境、格式字串和參數
   返回一個格式化字符串。

格式字串,用法都差不多,以下簡單說明幾個常用的

%s 顯示字串
%5$-10s 顯示字串從第5位開始,- 為靠左對齊, 20為字串長度
%,10.2d 顯示數值,每三位數用逗點區隔,如不足十位會用空白靠右顯示
%5.2f     顯示浮點數,小數點二位數顯示

詳細的格式字串請參考:
Format http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html

資料來源:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#format(java.util.Locale,%20java.lang.String,%20java.lang.Object…)

Categories: JAVA Tags: , ,

Spring JavaMailSenderImpl 寄送Email 認證調整

2008年9月5日 尚無評論

Spring 透過JavaMailSenderImpl 寄送Email時,預設是不透過認證方式寄信的
所以當使用smtp是需要帳號認證的,就要調整一下設定才行

首先要先建立一個class extends Properties,如下:

import java.util.Properties;

public class MailProperties extends Properties {
  private String auth;

  public MailProperties(String auth){
    super.setProperty(“mail.smtp.auth”,auth);
  }
}

然後在引入mail 的configure 檔案中加上使用參數即可:

<bean id=”mailProperties”  class=”spring.email.MailProperties”>
    <constructor-arg index=”0″>
          <value>true</value>
    </constructor-arg>
</bean>

並且在你的JavaMailSenderImpl使用參數中再加上username及password即可:

<bean id=”mailSender”  class=”org.springframework.mail.javamail.JavaMailSenderImpl”>
   <property name=”host”>
     <value>yoursmtpserver</value>
   </property>
   <property name=”username”>
     <value>username</value>
   </property>
   <property name=”password”>
     <value>password</value>
   </property>
   
   <property name=”javaMailProperties”>
     <ref local=”mailProperties”/>
   </property>
   
</bean>

這樣寄信就能支援認證機制囉!!

參考資料:
http://www.cjsdn.net/post/view?bid=20&id=147550&sty=1&tpg=9&age=0

Categories: JAVA Tags: , ,
分頁: 上一頁 1 2 3 4 5 6 7 下一頁