⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageutils.java

📁 java版源代码,里面包含很多源代码,大家可以看看.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:


      ( (HttpServletResponse) Desc).setContentType("image/gif");
      ( (HttpServletResponse) Desc).setHeader("Content-Disposition",
                                              " filename=animate.gif");
      ServletOutputStream out = ( (HttpServletResponse) Desc).getOutputStream();
      image.save(out);
      out.flush();
      out.close();

    }
  }

  /**
   * 产生flash动画
   * @param Src_File String[] 源文件必须是jpg格式
   * @param DelayTime int[] 单位为ms,最小单位不得小于1s
   * @param Desc String 目标文件
   * @throws Exception
   */
  public static void DrawFlashAnimate(String[] Src_File, int[] DelayTime,
                                      String Desc) throws
      Exception {
    if (Src_File != null && DelayTime != null) {
      logWriter.Info("产生Flash动画");

      int width = 0;
      int height = 0;
      Shape[] image = new Shape[Src_File.length];
      for (int i = 0; i < Src_File.length; i++) {
        FileInputStream jpegIn = new FileInputStream(Src_File[i]);
        int[] size = new int[2];
        image[i] = ImageUtil.shapeForImage(jpegIn, size);
        if (width < size[0])
          width = size[0];
        if (height < size[1])
          height = size[1];
        jpegIn.close();
      }
      Movie movie = new Movie(width, height, 1, 5, null);
      for (int i = 0; i < image.length; i++) {
        if (DelayTime[i] > 1000) {
          for (int j = 0; j < (DelayTime[i]) / 1000; j++) {
            Frame frame = movie.appendFrame();

            frame.placeSymbol(image[i], 0, 0);
          }
        }
        else {
          Frame frame = movie.appendFrame();

          frame.placeSymbol(image[i], 0, 0);

        }
      }
      //文件输出

      BufferedOutputStream out = new BufferedOutputStream(new
          FileOutputStream( (String) Desc));
      movie.write(out);
      out.flush();
      out.close();

    }
  }

  /**
   * 产生flash动画
   * @param Src_File String[] 源文件必须是jpg格式
   * @param DelayTime int[] 单位为ms,最小单位不得小于1s
   * @param Desc HttpServletResponse
   * @throws Exception
   */
  public static void DrawFlashAnimate(String[] Src_File, int[] DelayTime,
                                      HttpServletResponse Desc) throws
      Exception {
    if (Src_File != null && DelayTime != null) {
      logWriter.Info("产生Flash动画");

      int width = 0;
      int height = 0;
      Shape[] image = new Shape[Src_File.length];
      for (int i = 0; i < Src_File.length; i++) {
        FileInputStream jpegIn = new FileInputStream(Src_File[i]);
        int[] size = new int[2];
        image[i] = ImageUtil.shapeForImage(jpegIn, size);
        if (width < size[0])
          width = size[0];
        if (height < size[1])
          height = size[1];
        jpegIn.close();
      }
      Movie movie = new Movie(width, height, 1, 5, null);
      for (int i = 0; i < image.length; i++) {
        if (DelayTime[i] > 1000) {
          for (int j = 0; j < (DelayTime[i]) / 1000; j++) {
            Frame frame = movie.appendFrame();

            frame.placeSymbol(image[i], 0, 0);
          }
        }
        else {
          Frame frame = movie.appendFrame();

          frame.placeSymbol(image[i], 0, 0);

        }
      }

      //Http输出

      ( (HttpServletResponse) Desc).setContentType(
          "application/x-shockwave-flash");
      ( (HttpServletResponse) Desc).setHeader("Content-Disposition",
                                              " filename=animate.swf");

      ServletOutputStream out = ( (HttpServletResponse) Desc).getOutputStream();
      movie.write(out);
      out.flush();
      out.close();

    }
  }

  /**
   * 向右旋转图片
   * @param Src_file String 图片文件名
   * @param angdeg double 角度
   * @return BufferedImage
   * @throws Exception
   */

  public static BufferedImage Rotation(String Src_file, double angdeg) throws
      Exception {

    logWriter.Info("产生旋转图");

    BufferedImage thumbImage = ImageIO.read(new File(Src_file));

    AffineTransform transform = AffineTransform.getRotateInstance(
        Math.toRadians(angdeg), thumbImage.getWidth() / 2,
        thumbImage.getHeight() / 2);
    AffineTransformOp op = new AffineTransformOp(transform,
                                                 AffineTransformOp.
                                                 TYPE_BILINEAR);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    op = null;
    transform = null;
    thumbImage = null;
    return filteredImage;

  }

  /**
   * 向右旋转图片
   * @param thumbImage BufferedImage 图片
   * @param angdeg double 旋转角度
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Rotation(BufferedImage thumbImage, double angdeg) throws
      Exception {

    logWriter.Info("产生旋转图");
    AffineTransform transform = AffineTransform.getRotateInstance(
        Math.toRadians(angdeg), thumbImage.getWidth() / 2,
        thumbImage.getHeight() / 2);
    AffineTransformOp op = new AffineTransformOp(transform,
                                                 AffineTransformOp.
                                                 TYPE_BILINEAR);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    op = null;
    transform = null;
    return filteredImage;

  }

  /**
   * 产生图片边缘
   * @param Src_file String 图片文件
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Edge(String Src_file) throws
      Exception {

    logWriter.Info("产生图片边缘");

    BufferedImage thumbImage = ImageIO.read(new File(Src_file));

    float[] elements = {
        0.0f, -1.0f, 0.0f,
        -1.0f, 4.f, -1.0f,
        0.0f, -1.0f, 0.0f
    };

    Kernel kernel = new Kernel(3, 3, elements);
    ConvolveOp op = new ConvolveOp(kernel);
    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    thumbImage = null;
    op = null;
    kernel = null;
    elements = null;
    return filteredImage;

  }

  /**
   * 产生图片边缘
   * @param thumbImage BufferedImage 图片
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Edge(BufferedImage thumbImage) throws
      Exception {

    logWriter.Info("产生图片边缘");

    float[] elements = {
        0.0f, -1.0f, 0.0f,
        -1.0f, 4.f, -1.0f,
        0.0f, -1.0f, 0.0f
    };

    Kernel kernel = new Kernel(3, 3, elements);
    ConvolveOp op = new ConvolveOp(kernel);
    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    op = null;
    kernel = null;
    elements = null;
    return filteredImage;

  }

  /**
   * 产生胶片效果图
   * @param Src_file String 图片文件
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Negative(String Src_file) throws
      Exception {

    logWriter.Info("产生胶片效果图");

    BufferedImage thumbImage = ImageIO.read(new File(Src_file));

    byte negative[] = new byte[256];
    for (int i = 0; i < 256; i++)
      negative[i] = (byte) (255 - i);
    ByteLookupTable table = new ByteLookupTable(0, negative);
    LookupOp op = new LookupOp(table, null);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    thumbImage = null;
    op = null;
    table = null;
    return filteredImage;

  }

  /**
   * 产生胶片效果图
   * @param thumbImage BufferedImage 图片
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Negative(BufferedImage thumbImage) throws
      Exception {

    logWriter.Info("产生胶片效果图");

    byte negative[] = new byte[256];
    for (int i = 0; i < 256; i++)
      negative[i] = (byte) (255 - i);
    ByteLookupTable table = new ByteLookupTable(0, negative);
    LookupOp op = new LookupOp(table, null);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    op = null;
    table = null;
    return filteredImage;

  }

  /**
   * 变亮/暗效果
   * @param Src_file String 图片文件
   * @param weight  设置变换参数 越小越暗 例如 1.0f/9.0f
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Brighten(String Src_file, float weight) throws
      Exception {

    logWriter.Info("产生变亮/变暗效果图");

    BufferedImage thumbImage = ImageIO.read(new File(Src_file));

    float[] elements = new float[9];
    for (int i = 0; i < 9; i++)
      elements[i] = weight;

    Kernel kernel = new Kernel(3, 3, elements);
    ConvolveOp op = new ConvolveOp(kernel);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    thumbImage = null;
    op = null;
    kernel = null;
    elements = null;
    return filteredImage;

  }

  /**
   * 变亮/暗效果
   * @param thumbImage BufferedImage 图片
   * @param weight float 设置变换参数 越小越暗 例如 1.0f/9.0f
   * @return BufferedImage
   * @throws Exception
   */
  public static BufferedImage Brighten(BufferedImage thumbImage, float weight) throws
      Exception {

    logWriter.Info("产生变亮/变暗效果图");

    float[] elements = new float[9];
    for (int i = 0; i < 9; i++)
      elements[i] = weight;

    Kernel kernel = new Kernel(3, 3, elements);
    ConvolveOp op = new ConvolveOp(kernel);

    BufferedImage filteredImage
        = new BufferedImage(thumbImage.getWidth(), thumbImage.getHeight(),
                            thumbImage.getType());

    op.filter(thumbImage, filteredImage);
    op = null;
    kernel = null;
    elements = null;
    return filteredImage;

  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -