`

一个图片缩放处理

    博客分类:
  • j2ee
SUN 
阅读更多
package com.tjsoft.system;

import java.io.*;

import java.io.File;

import java.io.FileOutputStream;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**

* <p>Title:CImageZoom.java </p>

* <p>Description:图像缩放,支持JPG(JPEG)、GIF、PNG三种格式</p>

* 长,宽,比例,最少要设置一个

* <p>Copyright: Copyright 2002 Shenzhen Taiji SoftwareCorparation</p>

* <p>Company:Shenzhen Taiji SoftwareCorparation </p>

* @author 邹纪根

* @version 1.0 2003-10-05

*/

public class CImageZoom {

// 对象是否己经初始化

  private boolean isInitFlag = false;

// 定义生成小图片的宽度和高度,给其一个就可以了

  private int smallpicwidth = 0;

  private int smallpicheight = 0;

// 定义小图片的相比原图片的比例

  private double picscale = 0;

  /**

   * 构造函数

   * @param 没有参数

   */

  public CImageZoom() {

    this.picscale = 0;

    this.smallpicwidth = 0;

    this.smallpicheight = 0;

    this.isInitFlag = false;

  }

  /**

   * @param scale 设置缩影图像相对于源图像的大小比例

   */

  public void SetScale(double scale)  {

    if (scale <= 0) {

      System.out.println(" 缩放比例不能为 0 和负数! ");

    }

    this.picscale = scale;

    this.isInitFlag = true;

  }

  /**

   * @param smallpicwidth 设置缩影图像的宽度

   */

  public void SetSmallWidth(int smallpicwidth)  {

    if (smallpicwidth <= 0) {

      System.out.println(" 缩影图片的宽度不能为 0 和负数! ");

    }

    this.smallpicwidth = smallpicwidth;

    this.isInitFlag = true;

  }

  /**

   * @param smallpicheight 设置缩影图像的高度

   */

  public void SetSmallHeight(int smallpicheight)  {

    if (smallpicheight <= 0) {

      System.out.println(" 缩影图片的高度不能为 0 和负数! ");

    }

    this.smallpicheight = smallpicheight;

    this.isInitFlag = true;

  }

  /**

   * @description 生成源图像的缩影图像

   * @param pic_big_pathfilename 源图像的完全路径

   * @param pic_small_pathfilename 缩影图像的存放路径

   */

  public boolean doZoom(String pic_big_pathfilename, String pic_small_pathfilename)  {

    if (!this.isInitFlag) {

      System.out.println(" 对象参数没有初始化! ");

      return false;

    }

    if (pic_big_pathfilename == null || pic_small_pathfilename == null) {

      System.out.println(" 包含文件名的路径为空! ");

      return false;

    }

    int smallw = 0;

    int smallh = 0;

    File fi = new File(pic_big_pathfilename);

    Image src = null;

    try {

      src = javax.imageio.ImageIO.read(fi); //通过缓冲读入源图片文件,构造Image对象

    }

    catch (IOException ex) {

      System.out.println(" 读取源图像文件出错! ");

      return false;

    }

    int srcw=src.getWidth(null); //得到源图宽

    int srch=src.getHeight(null); //得到源图长

    double scale = (double) srcw / srch; // 图像的长宽比例

    //如果长宽都设置了

    if(this.smallpicheight!=0&&this.smallpicwidth!=0){

      double scalesmall=(double)this.smallpicwidth/this.smallpicheight;

      if(scale>scalesmall){

        smallw = this.smallpicwidth;

        smallh=(int)((double)this.smallpicwidth/scale);

      }else{

        smallh = this.smallpicheight;

        smallw=(int)((double)this.smallpicheight*scale);

      }

    }else{

     // 只设置了宽

     if (this.smallpicwidth != 0) {

       smallw = this.smallpicwidth;

       smallh = (smallw * srch) / srcw;

     }

    //只设置了长

     else if (this.smallpicheight != 0) {

       smallh = this.smallpicheight;

       smallw = (smallh * srcw) / srch;

     }

     // 只设置的缩小比例

    else if (this.picscale != 0) {

      smallw = (int) ( (float) srcw * this.picscale);

      smallh = (int) ( (float) srch * this.picscale);

    }

    else {

      System.out.println(" 对象参数初始化不正确! ");

      return false;

     }

    }

try {

    BufferedImage tag = new BufferedImage(smallw,smallh,BufferedImage.TYPE_INT_RGB);

    tag.getGraphics().drawImage(src,0,0,smallw,smallh,null);

    FileOutputStream out=new FileOutputStream(pic_small_pathfilename);

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

    encoder.encode(tag);

    out.close();

    return true;

    }

    catch (IOException ex1) {

      System.out.println(" 写入缩略图像文件出错! ");

      return false;

    }

  }

  public static void main(String arg[]) throws Exception {

    try{

    CImageZoom CImageZoom = new CImageZoom();

    CImageZoom.SetSmallWidth(600);

    CImageZoom.SetSmallHeight(400);

    CImageZoom.doZoom("D:\\uploadfile\\20060514154821562626-1.jpg","e:\\sm.jpg");

    }catch(Exception e){

    e.printStackTrace();

    }

  }

}



csdn
分享到:
评论

相关推荐

    图片缩放图片缩放

    在Authorware这个强大的多媒体创作工具中,图片缩放是一个常用的操作,它可以帮助用户根据需要调整图像的大小,适应不同的展示需求。以下将详细介绍如何在Authorware中进行图片缩放以及相关的知识点。 一、...

    java图片缩放处理

    一、图片缩放 1. 使用`BufferedImage`类: Java的`java.awt.image`包提供了`BufferedImage`类,可以用来读取、创建和操作图像。通过`Graphics2D`对象,我们可以对`BufferedImage`进行缩放操作。以下是一个简单的...

    asp.net core mvc 图片的处理、图片缩放

    总结来说,ASP.NET Core MVC提供了一个强大且灵活的平台来处理和缩放图片。通过使用ImageSharp这样的库,开发者可以轻松实现各种图像操作,同时结合优化策略提升系统性能和用户体验。在实际项目中,应根据具体需求...

    图片缩放剪切处理代码

    例如,你可以创建一个可拖放的区域,用户将图片拖入后,使用Canvas元素进行实时的处理。 其次,ASP(Active Server Pages)是微软开发的一种服务器端脚本环境,它允许开发者在服务器端生成动态网页。在图片处理场景...

    java 图片缩放处理

    本文将深入探讨如何使用Java进行图片缩放处理,并确保在压缩过程中尽可能减少失真,同时允许自定义压缩后的图片质量。 首先,我们需要了解Java中的核心库`java.awt.image`和`javax.imageio`,它们提供了处理图像的...

    Android-一个Android图片缩放查看控件支持手势

    这个名为"Android-一个Android图片缩放查看控件支持手势"的项目,旨在提供一个自定义的视图控件,它允许用户通过手势进行图片的放大、缩小以及平移操作,提升用户体验。下面我们将深入探讨这个控件的关键知识点和...

    PHP图片缩放水印类.zip

    这个名为"PHP图片缩放水印类.zip"的压缩包提供了一个专门用于处理这些功能的PHP类库。让我们详细了解一下这个类库的核心概念和功能。 首先,"PHP图片缩放水印类"是为了方便开发者在PHP环境中对图像进行缩放和添加...

    图片压缩缩放处理工具

    本文将详细解析"图片压缩缩放处理工具"的相关知识点,旨在帮助用户理解和掌握如何有效地管理和优化图像资源。 首先,我们来探讨图片压缩。图片压缩的主要目的是减少文件大小,从而节省存储空间和提高网络传输效率。...

    图片缩放功能的一个Demo

    本示例,"图片缩放功能的一个Demo",旨在提供一个简单的图片缩放解决方案。这个Demo可能是一个基于UIScrollView的实现,因为文件名列表中提到了"UIScrollviewShuoFang",这通常意味着在iOS开发中,我们利用...

    一个强大的图片缩放和相册展示JQ插件

    标题中的“一个强大的图片缩放和相册展示JQ插件”揭示了这个资源是一个基于jQuery的库,专门用于处理图像的缩放和在相册中展示。这意味着它可能包含一系列的功能,如动态调整图像大小,创建交互式的相册,以及提供...

    js图片缩放效果制作鼠标滚动图片等比例缩放

    在`&lt;head&gt;`标签内,会有一个`&lt;script&gt;`标签引用`wheel.js`,这使得JavaScript代码能够处理鼠标滚轮事件。同时,可能还会有`&lt;link&gt;`标签引用一个CSS文件来设置图片的基本样式和布局。 接着,`wheel.js`文件是实现...

    图像处理 图片缩放 图片滤波 图片旋转

    本文将深入探讨图像处理中的几个重要概念:图像缩放、滤波、增强、锐化和旋转,以及它们在C语言中的实现。 首先,图像缩放是调整图像尺寸的过程,可以放大或缩小图片。常见的方法有最近邻插值和双线性插值。最近邻...

    MFC图片缩放实例

    图片缩放是一种图像处理技术,通过改变图像的像素尺寸来调整其大小。在MFC中,我们可以利用GDI(Graphics Device Interface)或GDI+来进行图像处理,包括缩放。GDI提供了基本的绘图功能,而GDI+则提供了更多的高级...

    qt实现图片缩放

    在Qt框架中,图片缩放是一项常见的图像处理任务,它涉及到图形用户界面(GUI)的开发,特别是当我们要展示或操作图像时。Qt提供了一系列的类和方法来帮助开发者实现这个功能。以下将详细介绍如何使用Qt来实现图片的...

    scrollview图片的缩放处理

    这个"scrollview图片的缩放处理"主题主要涉及到以下几个关键知识点: 1. **ScrollView与ImageView的组合**: 当我们需要在ScrollView中显示一张大图,尤其是需要用户能够放大查看细节时,通常会将ImageView放入...

    图片缩放算法原理

    总之,图片缩放是一个涉及像素处理的重要环节,双线性内插值算法是其中一种有效的技术,通过加权平均相邻像素的方式提高了缩放的精确性和视觉效果。在实际应用中,还可以结合其他高级算法,如三次卷积插值、 lanczos...

    Silverlight 源码 图片缩放实例

    在提供的压缩包文件中,"drag_ScrollViewer_from_wpfhome.sln"可能是一个包含项目解决方案的文件,它可能包含了实现图片缩放功能的源代码。"drag_ScrollViewer_from_wpfhome.sln.cache"和"drag_ScrollViewer_from_...

    C# 图片缩放和移动程序

    在C#编程环境中,开发一个图片缩放和移动程序是一项常见的任务,特别是在图形用户界面(GUI)应用中。本程序是在.NET Framework 3.5环境下构建的,这意味着它利用了该框架提供的丰富的类库和功能。尽管如此,由于C#...

    图片缩放旋转 图片缩放 图片旋转 完整程序 源代码 cb c++

    在C++中,可以使用OpenCV库等图像处理库来实现图片缩放功能,它们提供了相应的API接口供开发者调用。 其次,“图片旋转”是指将图像绕某个点进行旋转,这个点通常为图像的中心。旋转操作同样需要考虑图像质量的保持...

    页面中图片缩放拖动

    在网页设计中,图片缩放和拖动是增强用户体验的重要功能。用户可以通过这些交互操作来...文件“图片拖动效果”可能包含了一个实现这一功能的示例代码,通过学习和理解这个例子,可以更好地掌握图片缩放拖动的实现方法。

Global site tag (gtag.js) - Google Analytics