void

          JMagick示例

          JMagickTest.java 實現圖片的各種操作示例,如旋轉,加邊框,設置背景,提升質量,加蓋文字說明等等...

          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(008040);
                      
          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(00,
                              
          1020));
                      borderedImage.setFileName(
          "border.jpg");
                      borderedImage.writeImage(info);
                      
          // Raise image
                      MagickImage raisedImage = new MagickImage(new ImageInfo("pics.jpg"));
                      raisedImage.raiseImage(
          new Rectangle(001020), 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.010.0);
                      sheared.setFileName(
          "sheared.jpg");
                      sheared.writeImage(info);
                      MagickImage scaled 
          = image.scaleImage(10080);
                      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(00false);
                      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] = (byte255;
                          pixels[
          4 * i + 1= (byte255;
                          pixels[
          4 * i + 2= (byte255;
                          pixels[
          4 * i + 3= (byte0;
                      }
                      blankImage.constituteImage(
          200100"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(2020150120);
                      MagickImage cropped 
          = image.cropImage(rect);
                      cropped.setFileName(
          "cropped.jpg");
                      cropped.writeImage(info);
                      
          // Chop image
                      rect = new Rectangle(00150120);
                      MagickImage chopped 
          = image.chopImage(rect);
                      chopped.setFileName(
          "chopped.jpg");
                      chopped.writeImage(info);
                      
          // Sharpen image
                      MagickImage sharpened = image.sharpenImage(1.05.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(250200);
              }
              
          /**
               * We want the window size to be at this minimum.
               
          */
              
          public Dimension getMinimumSize() {
                  return new Dimension(300200);
              }

              
          /**
               * 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 2008-07-19 12:15 void 閱讀(1414) 評論(2)  編輯  收藏 所屬分類: Jmagick

          Feedback

          # re: JMagick示例 2010-06-18 11:24 lacewigs

          really enjoyed the quality information you offer to your visitors. Thanks  回復  更多評論   

          # re: JMagick示例[未登錄] 2011-09-16 12:00 胡波

          請問 我旋轉圖片后 設置圖片背景為透明 結果圖片邊緣有鋸齒效果..請問怎么解決  回復  更多評論   

          主站蜘蛛池模板: 厦门市| 玉山县| 汤阴县| 斗六市| 罗甸县| 盘山县| 遂昌县| 平顶山市| 育儿| 兰西县| 聊城市| 中方县| 上饶市| 肥城市| 北安市| 吉林市| 乡宁县| 乌兰浩特市| 苏尼特右旗| 蓬溪县| 荆门市| 闸北区| 伊宁市| 黄石市| 锡林郭勒盟| 无锡市| 黎平县| 渑池县| 乌兰察布市| 洛浦县| 庆元县| 桃江县| 盐池县| 郓城县| 夹江县| 延川县| 澳门| 濮阳县| 南皮县| 鄢陵县| 崇义县|