`
hepeng8514
  • 浏览: 12191 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

图片处理类

阅读更多
public class ImgHandle{

  private Picture oldpicture;
  private Picture newpicture;

  private ImageFilter imageFilter=new ImageFilter();
  private FileDeal fd=new FileDeal();

  public void ImgHandle(){}


  public void copyImg(Picture oldpicture,Picture newpicture) throws Exception
  {
    String newimgname="";
    try{
      File originfile=new File(oldpicture.getImgDir(),oldpicture.getImgfile());
      if (!originfile.isFile()) {
        throw new Exception(" there is no this image file:"+originfile.toString());
      }

      File targetfile=new File(newpicture.getImgDir(),newpicture.getImgfile());

      fd.copy(originfile.toString(), targetfile.toString());

    }catch (Exception ex) {
      throw new Exception(" dealUploadImg error: "+ex.getMessage());
    }

  }


  /**
   *  create a preview small picture
   *  it has same function as dealUploadImg()
   *  gif --> png
   *  jpg --> jpg
   * */
  public void CreateThumbnail(Picture oldpicture,Picture newpicture,int maxwidth,int maxheight) throws Exception
  {
    String ext="";
    if (imageFilter.isGif(oldpicture.getImgfile())){
      newpicture.setImgfile(newpicture.getImgPrefix()+".png");
      ext="png";
    }else if (imageFilter.isJpg(oldpicture.getImgfile())){
      ext="jpg";
    }else if (imageFilter.isPng(oldpicture.getImgfile())){
      ext="png";
    }

    try {
      File F = new File(oldpicture.getImgDir(),oldpicture.getImgfile());
      if (!F.isFile())
        return;

      getImagSize(oldpicture);
      double Ratio=getRadio(oldpicture,maxwidth,maxheight);

      BufferedImage Bi = ImageIO.read(F);
      AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
      Image Itemp = op.filter(Bi, null);

      File ThF = new File(newpicture.getImgDir(),newpicture.getImgfile());
      ImageIO.write((BufferedImage)Itemp, ext, ThF);

    }catch (Exception ex) {
      throw new Exception(" ImageIo.write error in CreatThum.: "+ex.getMessage());
    }

  }

  public double getRadio(Picture picture,int maxwidth,int maxheight){
    double Ratio=1.0;

    if (picture.getWidth()>picture.getHeight()){
      Ratio = (new Integer(maxwidth)).doubleValue()/picture.getWidth();
    }else if (picture.getWidth()<picture.getHeight()){
      Ratio=(new Integer(maxheight)).doubleValue()/picture.getHeight();
    }else if (picture.getWidth()==picture.getHeight()){
       if (picture.getWidth()>maxwidth){
           Ratio = (new Integer(maxwidth)).doubleValue()/picture.getWidth();
       }

    }
    return Ratio;
  }

  public void getImagSize(Picture picture) throws Exception{

    double Ratio=1.0;

    try{
      File F = new File(picture.getImgDir(),picture.getImgfile());
      if (!F.isFile())
        throw new Exception(F+" is not image file error !");

      BufferedImage Bi = ImageIO.read(F);
//      Image Itemp = Bi.getScaledInstance (maxwidth,maxheight,Bi.SCALE_SMOOTH);

      picture.setWidth(Bi.getWidth());
      picture.setHeight(Bi.getHeight());
    }catch (Exception ex) {
      throw new Exception(" getImagSize: "+ex.getMessage());
    }

  }

  public List picList(String picDir,int maxwidth,int maxheight)  throws Exception{
     List list=new ArrayList();
     try{
        File directory=new File(picDir);
        String[] images = directory.list(new ImageFilter());
        String fromdir=picDir;
        for (int i = 0; i < images.length; i++){
          String imgfile=images[i];
          Picture picture=new Picture(fromdir,imgfile);
          getImagSize(picture);
          list.add(picture);
        }
        return list;
     }catch (Exception ex) {
        throw new Exception("picList error:"+ex.getMessage());
     }
  }


}
分享到:
评论

相关推荐

    php图像处理类.zip

    这个"php图像处理类.zip"文件提供了一个专门用于图像处理的PHP类库,它可以帮助开发者更方便、高效地执行这些任务。以下是对这个类库的详细解释。 首先,PHP提供了几个内置的图像处理函数,如GD库(GD2)和Imagick...

    php 图片处理类

    PHP图片处理类是一种用于在服务器端对图像进行操作的工具,它可以实现图片的裁剪、缩放、旋转、水印添加、颜色调整等多样化的功能。这个强大的PHP图片处理类库,显然集成了多种常见的图像处理操作,为开发者提供了一...

    thinkphp5图像处理类

    ThinkPHP5的图像处理类还支持添加文本和图片水印。文本水印使用`text`方法,图片水印使用`water`方法: - 文本水印: ```php $image-&gt;text('ThinkPHP5', 'path/to/font.ttf', 12, '#ffffff', 50, 50); ``` - ...

    php 图片处理类 超强

    这个图片处理类很可能就是基于GD库构建的。例如,我们可以使用`imagecreatefromjpeg()`、`imagecreatefrompng()`等函数来加载不同格式的图片,然后通过`imagecopyresampled()`进行图像缩放,`imagecrop()`进行裁剪,...

    功能很全的PHP图片处理类

    《PHP图片处理类详解》 在PHP开发中,图片处理是一项常见的需求,涉及到各种操作,如缩放、裁剪、添加水印等。本篇文章将详细介绍一个功能全面的PHP图片处理类,帮助开发者高效地进行图片操作。 首先,这个PHP图片...

    C# 图像处理类(大而全)

    在C#编程环境中,图像处理是一项重要的功能,广泛应用于各种应用程序,如图形用户界面、游戏开发、数据分析等。本文将详细讲解如何利用C#进行图像处理,包括图像的缩放、颜色转换、浮雕效果的实现,以及图像数据在...

    c# 图片处理的资料 图像处理类

    以上就是C#中进行图像处理的一些基础知识,具体到压缩包中的"图像处理类",可能包含了更多详细的示例代码和教程,可以帮助开发者更好地理解和运用这些技术。如果你需要更深入地学习,可以参考这些资源,逐步掌握C#...

    图像处理类模块

    图像处理类模块是专门用于处理和分析图像的软件组件,它能够实现对图像进行一系列的操作,以达到特定的处理目标。在本案例中,我们有`PicManager.cpp`和`PicManager.h`两个文件,它们很可能定义了一个名为`...

    PHP图片处理类

    以下是对这个PHP图片处理类的详细说明。 首先,类的核心功能之一是图片缩放。在网站或应用程序中,经常需要调整图片大小以适应不同的展示位置或存储需求。通过这个PHP类,开发者可以轻松地将图片缩放到指定的尺寸,...

    C++图像处理类

    本文将详细解析标题为“C++图像处理类”的位图处理类库,该类库包含了丰富的图像复原和增强算法,且源代码注释清晰,便于理解和使用。 首先,我们来看`ImgProcess`类。这个类很可能是这个C++库的核心,它可能包含了...

    分享php多功能图片处理类_.docx

    ### 图像处理类(Image.class.php)概述 这个名为`Image`的类提供了一系列方法来处理图像,包括构造方法、等比缩放函数和水印标记函数。类的内部属性`$path`用于存储图片路径,方便后续操作。 #### 1. 等比缩放函数...

    C++编写的数字图像处理类

    本篇将围绕"**C++编写的数字图像处理类**"这一主题,探讨如何在VC6.0环境下利用C++编写一个类来实现基本的图像处理功能,特别是针对24位(RGB)位图文件的操作。 首先,24位图是指每个像素由红、绿、蓝三个颜色通道...

    很强很完整的php图片处理类.zip

    介绍一个很强很完整的图片处理类,功能比较齐全,基本图片处理,用于完成图片缩入,水印添加,当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小,水印图可以设置跟背景的合并度,程序会按照图片的尺寸从...

    Halcon Image 图像处理类 VC++

    在本篇内容中,我们将深入探讨"**Halcon Image 图像处理类 VC++**"的相关知识点,以及如何在Visual C++(VC++)环境中使用HalconImage类进行图像操作。 首先,**HalconImage类**是Halcon库为VC++开发者提供的一个...

    c#图片处理类包含 色相类型,底片效果,图片亮度调整等等

    c#图片处理类包含 色相类型,底片效果,图片亮度调整等等

    两个强悍的php 图像处理类1

    根据提供的文件内容,我们可以了解到一个PHP图像处理类的详细实现。该类主要用于图片的基本处理,包括图片的缩放、裁切以及水印的添加。下面是基于文件内容的详细知识点: 首先,我们介绍PHP图像处理类的基本功能和...

    java 图片处理类

    这个"java 图片处理类"提供了一种便捷的方式,用于给图片添加水印以及压缩图片,这是开发过程中非常实用的功能。下面将详细介绍这个Java自定义Util类中的核心知识点。 1. **Java图像处理库**: 通常,Java开发者会...

    VC++下的图像处理类

    本文将详细解析“VC++下的图像处理类”的核心知识点,包括图像读取、保存、调色板修改以及图像显示。 首先,让我们关注`ImageClass.cpp`和`ImageClass.h`这两个文件。它们分别代表了类的实现文件和头文件。在C++...

Global site tag (gtag.js) - Google Analytics