<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    明天的明天的明天

    用鍵盤改變生活

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      17 Posts :: 0 Stories :: 19 Comments :: 0 Trackbacks
    ImageMagick, JMagick安裝、配置及使用:
    平臺:winXP
    1. 安裝ImageMagick(ImageMagick website:http://www.imagemagick.org/script/index.php)
        下載并安裝ImageMagick。file name: ImageMagick-6.2.6-8-Q16-windows-dll.exe
         download address: http://prdownloads.sourceforge.net/imagemagick/ImageMagick-6.2.6-8-Q16-windows-dll.exe?download
        安裝成功后,把install path加入系統(tǒng)path,以便能調(diào)用dll.如C:\Program Files\ImageMagick-6.2.6-Q16
    2. 安裝JMagick(JMagick website: http://www.yeo.id.au/jmagick/
        下載JMatick。file name: jmagick-6.2.6-win.zip
        download address: http://www.yeo.id.au/jmagick/quickload/win-6.2.6/jmagick-6.2.6-win.zip
        解壓后把jmagick-6.2.6-win\jar\jmagick.jar copy到項目的WEB-INF\lib目錄下,把jmagick-6.2.6-win\q16\jmagick.dll copy 到c:\windows\system32目錄下。
    3. 程序參考:
       JMagickScale.java 實現(xiàn)圖片縮略圖
    ------------------------------------------------------------------
    package images;
    import magick.ImageInfo;
    import magick.MagickException;
    import magick.MagickImage;
    public class JMagickScale {
     /**
      * Description:
      * @param args
      * @throws MagickException
      */
     public static void main(String[] args) throws MagickException {
      System.setProperty("jmagick.systemclassloader","no");
     
      //reading image
      ImageInfo info = new ImageInfo("c:/image4.bmp");
      MagickImage image = new MagickImage(info);
     
      //resize image
      MagickImage scaleImg = image.scaleImage(95, 80);
     
      //write image to file
      scaleImg.setFileName("c:/MyFile4.bmp");
      scaleImg.writeImage(info);
     }
    }
     JMagickTest.java 實現(xiàn)圖片的各種操作示例,如旋轉(zhuǎn),加邊框,設(shè)置背景,提升質(zhì)量,加蓋文字說明等等...
    -----------------------------------------------------------------------------------------------------------------------------
    package images;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    import magick.ImageInfo;
    import magick.MagickImage;
    import magick.MagickException;
    import magick.QuantizeInfo;
    import magick.ColorspaceType;
    import magick.MagickApiException;
    import magick.PixelPacket;
    import magick.DrawInfo;
    import magick.ResolutionType;
    import magick.ProfileInfo;
    import magick.MontageInfo;
    import magick.Magick;
    import magick.MagickInfo;
    import java.io.IOException;
    import java.io.FileOutputStream;
    /**
     * For testing JMagick functions.
     *
     * @author Eric Yeo
     */
    public class JMagickTest {
        /**
         * Display the information about the profile supplied.
         *
         * @param profile
         *            the profile for which to display
         */
        private static void displayProfile(ProfileInfo profile) {
            if (profile.getName() == null) {
                System.out.println("Profile name is null");
            }
            else {
                System.out.println("Profile name is " + profile.getName());
            }
            if (profile.getInfo() == null) {
                System.out.println("No profile info");
            }
            else {
                System.out.println("Profile length is " + profile.getInfo().length);
            }
        }
        public static void main(String[] args) {
            try {
                Rectangle rect = new Rectangle(0, 0, 80, 40);
                int flags = Magick.parseImageGeometry("60x50", rect);
                System.out.println("Scaled to " + rect.width + "x" + rect.height);
                // Copy an image.
                ImageInfo info = new ImageInfo("pics.jpg");
                info.setPage("50x50+0+0");
                info.setUnits(ResolutionType.PixelsPerInchResolution);
                info.setColorspace(ColorspaceType.RGBColorspace);
                info.setBorderColor(PixelPacket.queryColorDatabase("red"));
                info.setDepth(8);
                System.out.println("Depth "+info.getDepth());
                info.setDepth(0);
                MagickImage image = new MagickImage(info);
                image.setImageAttribute("Comment", "Processed by JMagick");
                System.out.println("Quality is "+image.getQuality());
                System.out.println("Colorspace is " + image.getColorspace());
                System.out.println("Resolution units is " + image.getUnits());
                System.out.println("X resolution is " + image.getXResolution());
                System.out.println("Y resolution is " + image.getYResolution());
                System.out.println("Size blob is " + image.sizeBlob());
                System.out.println("Colors " + image.getColors());
                System.out.println("Total colors " + image.getTotalColors());
                System.out.println("Depth is "+image.getDepth());
                image.signatureImage();
                image.setFileName("copy.jpg");
                image.writeImage(info);
                // Background Color
                System.out.println("Old colour " + image.getBackgroundColor());
                image.setBackgroundColor(PixelPacket.queryColorDatabase("red"));
                System.out.println("New colour " + image.getBackgroundColor());
                // Border image
                image.setBorderColor(PixelPacket.queryColorDatabase("green"));
                MagickImage borderedImage = image.borderImage(new Rectangle(0, 0,
                        10, 20));
                borderedImage.setFileName("border.jpg");
                borderedImage.writeImage(info);
                // Raise image
                MagickImage raisedImage = new MagickImage(new ImageInfo("pics.jpg"));
                raisedImage.raiseImage(new Rectangle(0, 0, 10, 20), true);
                raisedImage.setFileName("raised.jpg");
                raisedImage.writeImage(info);
                // Profile test
                System.out.println("Number of generic profiles "
                        + image.getGenericProfileCount());
                displayProfile(image.getColorProfile());
                image.setColorProfile(new ProfileInfo());
                displayProfile(image.getColorProfile());
                image.setColorProfile(new ProfileInfo("Test", new byte[20]));
                displayProfile(image.getColorProfile());
                // Montage test
                MagickImage images[] = new MagickImage[2];
                images[0] = image;
                images[1] = image;
                MagickImage seqImage = new MagickImage(images);
                MontageInfo montageInfo = new MontageInfo(new ImageInfo());
                montageInfo.setFileName("montage.jpg");
                montageInfo.setTitle("Melbourne");
                montageInfo.setBorderWidth(5);
                MagickImage montage = seqImage.montageImages(montageInfo);
                montage.writeImage(new ImageInfo());
               
                // Converting the montage into a blob
                montage.setMagick("JPG");
                byte[] mblob = montage.imageToBlob(new ImageInfo());
                System.out.println("Length "+mblob.length);
                // Test average
                MagickImage average = seqImage.averageImages();
                average.setFileName("average.jpg");
                average.writeImage(new ImageInfo());
                // Image to blob
                info = new ImageInfo();
                byte[] blob = image.imageToBlob(info);
                // Blob to image
                info = new ImageInfo();
                MagickImage blobImage = new MagickImage(info, blob);
                Dimension imageDim = blobImage.getDimension();
                System.out.println("Blob width is " + imageDim.width);
                System.out.println("Blob heght is " + imageDim.height);
                System.out.println(imageDim);
                blobImage.setFileName("blob.jpg");
                blobImage.writeImage(info);
                // JPEG Image to GIF blob
                image.setMagick("GIF");
                blob = image.imageToBlob(info);
                try {
                    FileOutputStream out = new FileOutputStream("blob.gif");
                    out.write(blob);
                    out.close();
                }
                catch (IOException ex) {
                    System.out.println("Unable to write blob to file: " + ex);
                }
                // Rotation and shear
                image = new MagickImage(new ImageInfo("pics.jpg"));
                MagickImage rotated = image.rotateImage(45.0);
                rotated.setFileName("rotated.jpg");
                rotated.writeImage(info);
                MagickImage sheared = image.shearImage(50.0, 10.0);
                sheared.setFileName("sheared.jpg");
                sheared.writeImage(info);
                MagickImage scaled = image.scaleImage(100, 80);
                scaled.setFileName("scaled.jpg");
                scaled.writeImage(info);
                // Cloning
                imageDim = image.getDimension();
                System.out.println("Width is " + imageDim.width);
                System.out.println("Height is " + imageDim.height);
                System.out.println("Depth is " + image.getDepth());
                System.out.println("Storage class is " + image.getStorageClass());
                System.out.println("Comment is \""
                        + image.getImageAttribute("Comment") + "\"");
                MagickImage clonedImage = image.cloneImage(0, 0, false);
                clonedImage.setFileName("clone.jpg");
                clonedImage.writeImage(info);
                // Quantization
                MagickImage quantizedImage = new MagickImage(new ImageInfo(
                        "pics.jpg"));
                QuantizeInfo quantizeInfo = new QuantizeInfo();
                quantizeInfo.setColorspace(ColorspaceType.GRAYColorspace);
                quantizeInfo.setNumberColors(256);
                quantizeInfo.setTreeDepth(4);
                System.out.println("QuantizeImage "
                        + quantizedImage.quantizeImage(quantizeInfo));
                System.out.println("Colors " + quantizedImage.getColors());
                System.out.println("Total colors "
                        + quantizedImage.getTotalColors());
                quantizedImage.setFileName("quantized.png");
                quantizedImage.writeImage(info);
    //            for (int i = 0; i < quantizedImage.getColors(); i++) {
    //                PixelPacket pp = quantizedImage.getColormap(i);
    //                System.out.println("Colormap[" + i + "] = (" + pp.getRed()
    //                        + ", " + pp.getGreen() + ", " + pp.getBlue() + ")");
    //            }
    //            PixelPacket[] ppArray = quantizedImage.getColormap();
    //            for (int i = 0; i < quantizedImage.getColors(); i++) {
    //                System.out.println("Colormap2[" + i + "] = ("
    //                        + ppArray[i].getRed() + ", " + ppArray[i].getGreen()
    //                        + ", " + ppArray[i].getBlue() + ")");
    //            }
                // Create an image from scratch
                MagickImage blankImage = new MagickImage();
                byte[] pixels = new byte[200 * 100 * 4];
                for (int i = 0; i < 200 * 100; i++) {
                    pixels[4 * i] = (byte) 255;
                    pixels[4 * i + 1] = (byte) 255;
                    pixels[4 * i + 2] = (byte) 255;
                    pixels[4 * i + 3] = (byte) 0;
                }
                blankImage.constituteImage(200, 100, "RGBA", pixels);
                // Put a red rectangle around the border
                DrawInfo drawInfo = new DrawInfo(new ImageInfo());
                drawInfo.setPrimitive("Rectangle 10 10 190 90");
                drawInfo.setStroke(PixelPacket.queryColorDatabase("red"));
                drawInfo.setFill(PixelPacket.queryColorDatabase("white"));
                blankImage.drawImage(drawInfo);
                // Annotate the image with a green Hello
                ImageInfo blankImageInfo = new ImageInfo();
                DrawInfo annotateInfo = new DrawInfo(blankImageInfo);
                annotateInfo.setOpacity(0);
                annotateInfo.setFont("fixed");
                annotateInfo.setFill(PixelPacket.queryColorDatabase("green"));
                annotateInfo.setText("Hello");
                annotateInfo.setGeometry("+30+30");
                blankImage.annotateImage(annotateInfo);
                blankImage.setFileName("blank.jpg");
                blankImage.writeImage(info);
                // Make the white page of the image transparent
                blankImage.transparentImage(
                        PixelPacket.queryColorDatabase("white"), 65535);
                blankImage.setFileName("transparent.png");
                blankImage.writeImage(info);
                // Crop image
                rect = new Rectangle(20, 20, 150, 120);
                MagickImage cropped = image.cropImage(rect);
                cropped.setFileName("cropped.jpg");
                cropped.writeImage(info);
                // Chop image
                rect = new Rectangle(0, 0, 150, 120);
                MagickImage chopped = image.chopImage(rect);
                chopped.setFileName("chopped.jpg");
                chopped.writeImage(info);
                // Sharpen image
                MagickImage sharpened = image.sharpenImage(1.0, 5.0);
                sharpened.setFileName("sharpened.jpg");
                sharpened.writeImage(info);
                // Despeckle image
                MagickImage despeckled = image.despeckleImage();
                despeckled.setFileName("despeckled.jpg");
                despeckled.writeImage(info);
                // Convolve image
                double[] kernel = new double[9];
                for (int i = 0; i < 9; i++) {
                    kernel[i] = 1.0;
                }
                kernel[4] = 2.0;
                MagickImage convolvedImage = image.convolveImage(3, kernel);
                convolvedImage.setFileName("convolved.jpg");
                convolvedImage.writeImage(info);
                // Finally display the image.
                MagickWindow window = new MagickWindow(image);
                window.setVisible(true);
                // MagickInfo test
                MagickInfo minfo = new MagickInfo("JPEG");
                System.out.println("JPG description: " + minfo.getDescription());
            }
            catch (MagickApiException ex) {
                System.err.println("MagickException: " + ex + ": " + ex.getReason()
                        + ", " + ex.getDescription());
            }
            catch (MagickException ex) {
                System.err.println("MagickException: " + ex);
            }
        }
    }
     
    MagickWindow.java  在java.awt組件中顯示
    -----------------------------------------------------------------------------------------------------------------------
    package images;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import magick.MagickImage;
    import magick.util.MagickViewer;
    /**
     * This class implements a window that displays a MagickImage.
     *
     * @author Eric Yeo
     */
    public class MagickWindow extends Frame {
        /**
         * A listener that exits the application when we receive
         * the window closing event.
         */
        private final class MyListener extends WindowAdapter {
     /**
      * This method is called when the window closes.
      */
     public void windowClosing(WindowEvent event)
     {
         System.exit(0);
     }
        }
        /**
         * We want the window size to be this big.
         */
        public Dimension getPreferredSize() {
     return new Dimension(250, 200);
        }
        /**
         * We want the window size to be at this minimum.
         */
        public Dimension getMinimumSize() {
     return new Dimension(300, 200);
        }
     
        /**
         * Constructor.
         */
        public MagickWindow(MagickImage image)
        {
     setResizable(true);
     addWindowListener(new MyListener());
     MagickViewer imageViewer = new MagickViewer();
     add(imageViewer, "Center");
     
     setTitle("Magick Window");
     pack();
     imageViewer.setImage(image);
        }
    }

     
    posted on 2007-09-17 12:51 Endless 閱讀(3430) 評論(2)  編輯  收藏

    Feedback

    # re: 【轉(zhuǎn)】ImageMagick, JMagick安裝、配置及使用[未登錄] 2008-12-08 17:02 dawei
    請問 給圖片加上中文 ,你有沒有做過
    可以交流一下嗎?
    447279669
    謝謝  回復(fù)  更多評論
      

    # re: 【轉(zhuǎn)】ImageMagick, JMagick安裝、配置及使用 2011-03-08 14:23 fengbr0
    請問為什么只有圖片的縮小而沒有放大。這個能實現(xiàn)伐?  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 午夜高清免费在线观看| 成人免费a级毛片| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲免费网站观看视频| 最新欧洲大片免费在线| 亚洲欧洲另类春色校园小说| 国产三级在线免费| 亚洲国产香蕉碰碰人人| 蜜桃AV无码免费看永久| 亚洲天堂一区在线| 最新中文字幕免费视频| 久久精品国产亚洲av天美18| 亚洲A∨精品一区二区三区| 中文永久免费观看网站| 久久亚洲精品中文字幕无码| 3344永久在线观看视频免费首页 | 亚洲精品国精品久久99热一| 成人网站免费大全日韩国产 | 亚洲欧洲日产专区| 成年人免费视频观看| 无码天堂va亚洲va在线va| 亚洲精品视频久久久| 精品成人免费自拍视频| 亚洲美女aⅴ久久久91| 影音先锋在线免费观看| 免费看一级一级人妻片| 亚洲AV无码成人专区片在线观看| 37pao成人国产永久免费视频| 亚洲精品理论电影在线观看| 亚洲成年看片在线观看| 久久久久久国产精品免费免费男同 | 国产精品高清视亚洲精品| 在线观看91精品国产不卡免费| 色多多A级毛片免费看| 亚洲av女电影网| 午夜精品在线免费观看| 久久毛片免费看一区二区三区| 亚洲日本香蕉视频| 免费一级毛片在线播放| 免费在线观看一级片| 亚洲日韩精品无码专区加勒比|