以下のコードでは、青色と赤色のライトの位置をずらして、画像を照らしています。
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest57
{
   public static void main(String args[])
       throws Exception
   {
       /* 画像をライトで照らしたような画像の生成 */
       BufferedImage img = ImageIO.read(new File("sf2.jpg"));
       LightFilter lf = new LightFilter();
       LightFilter.Light lt1 = new LightFilter.Light();
       /* 方位 */
       lt1.setAzimuth(90f/180f*ImageMath.PI);
       /* 高さ */
       lt1.setElevation(0.8f);
       /* 強さ */
       lt1.setIntensity(0.5f);
       /* 位置X */
       lt1.setCentreX(0.2f);
       /* 位置Y */
       lt1.setCentreY(0.5f);
       /* ライトの色 */
       lt1.setColor(0xff0000ff);
       lf.addLight(lt1);
       LightFilter.Light lt2 = new LightFilter.Light();
       /* 方位 */
       lt2.setAzimuth(90f/180f*ImageMath.PI);
       /* 高さ */
       lt2.setElevation(0.8f);
       /* 強さ */
       lt2.setIntensity(0.5f);
       /* 位置X */
       lt2.setCentreX(0.8f);
       /* 位置Y */
       lt2.setCentreY(0.5f);
       /* ライトの色 */
       lt2.setColor(0xffff0000);
       lf.addLight(lt2);
       BufferedImage img2 = lf.filter(img, null);
       ImageIO.write(img2, "jpg", new File("sample588a.jpg"));
   }
}
元画像(sf2.jpg)

出力画像(sample588a.jpg)

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
 
No comments:
Post a Comment