該放棄 JMagick ?

最近因為需要使用到 Java 的圖檔技術, 上網找了一下, 希望能夠有好的範例,
首先想到的關鍵字是 ImageMagick …為何會這樣想…當然是和 PerlMagick 有密切的關係!!
事實上 , PerlMagick 相當好用, 甚至2,3 年前, 我就已經用 PerlMagick 製作了一個類似 M$ 的檔案總管,
可以擁有縮圖功能, ( 事實上, M$的縮圖功能其實某些時候還蠻好用的 )
 
不過, 這樣的傾心, 並未得到 JMagick 的相對回應,
這讓人感到有點沮喪…
只好轉而向 SUN 求助, 搜尋了一下, 發現事實上 SUN JDK 1.5 所提供的 imageIO 就某種程度來說,
已經相當符合我的需求了, ( 轉換檔案格式, 變更檔案大小 )!!…
 
因此在這邊推薦給各位用看看….
當然我也寫了一個範例: 在這範例中, 包含了 轉檔, 以及變更 scaler….
當然這都只是初步的寫法, 要更多的功能, 舊址能靠各位的腦力激盪了!!
 
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.io.File;
public class ImageScale{
    public static void main(String [] args) throws Exception{
        // Default w/h values; overriden by command-line -width/-height parameters
        int IMAGE_W = 150;
        int IMAGE_H = 250;
        final File Input = new File("In.jpg");
        BufferedImage bi = ImageIO.read(Input);
        // temporary image for every scaled instance
        BufferedImage scaledImg = new BufferedImage(IMAGE_W, IMAGE_H, BufferedImage.TYPE_INT_RGB);
        Graphics2D gScaledImg = scaledImg.createGraphics();
        // Note the use of BILNEAR filtering to enable smooth scaling
        gScaledImg.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        // Scale the original image into the temporary image
        gScaledImg.drawImage(bi, 0, 0, IMAGE_W, IMAGE_H, null);
        final File Output = new File("In_scale.bmp");
        // Save the scaled version out to the file
        ImageIO.write(scaledImg, "bmp", Output);
    }
}
 
當然使用測試的時候得注意:
1. 你的相同路徑下應該要有一個 In.jpg圖形檔….
2. 注意你所使用的 JDK 應該為 1.5 上版本!!
 
廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s