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
分享到:
相关推荐
一、图片缩放 1. 使用`BufferedImage`类: Java的`java.awt.image`包提供了`BufferedImage`类,可以用来读取、创建和操作图像。通过`Graphics2D`对象,我们可以对`BufferedImage`进行缩放操作。以下是一个简单的...
总结来说,ASP.NET Core MVC提供了一个强大且灵活的平台来处理和缩放图片。通过使用ImageSharp这样的库,开发者可以轻松实现各种图像操作,同时结合优化策略提升系统性能和用户体验。在实际项目中,应根据具体需求...
例如,你可以创建一个可拖放的区域,用户将图片拖入后,使用Canvas元素进行实时的处理。 其次,ASP(Active Server Pages)是微软开发的一种服务器端脚本环境,它允许开发者在服务器端生成动态网页。在图片处理场景...
本文将深入探讨如何使用Java进行图片缩放处理,并确保在压缩过程中尽可能减少失真,同时允许自定义压缩后的图片质量。 首先,我们需要了解Java中的核心库`java.awt.image`和`javax.imageio`,它们提供了处理图像的...
这个名为"Android-一个Android图片缩放查看控件支持手势"的项目,旨在提供一个自定义的视图控件,它允许用户通过手势进行图片的放大、缩小以及平移操作,提升用户体验。下面我们将深入探讨这个控件的关键知识点和...
这个名为"PHP图片缩放水印类.zip"的压缩包提供了一个专门用于处理这些功能的PHP类库。让我们详细了解一下这个类库的核心概念和功能。 首先,"PHP图片缩放水印类"是为了方便开发者在PHP环境中对图像进行缩放和添加...
本文将详细解析"图片压缩缩放处理工具"的相关知识点,旨在帮助用户理解和掌握如何有效地管理和优化图像资源。 首先,我们来探讨图片压缩。图片压缩的主要目的是减少文件大小,从而节省存储空间和提高网络传输效率。...
本示例,"图片缩放功能的一个Demo",旨在提供一个简单的图片缩放解决方案。这个Demo可能是一个基于UIScrollView的实现,因为文件名列表中提到了"UIScrollviewShuoFang",这通常意味着在iOS开发中,我们利用...
标题中的“一个强大的图片缩放和相册展示JQ插件”揭示了这个资源是一个基于jQuery的库,专门用于处理图像的缩放和在相册中展示。这意味着它可能包含一系列的功能,如动态调整图像大小,创建交互式的相册,以及提供...
在`<head>`标签内,会有一个`<script>`标签引用`wheel.js`,这使得JavaScript代码能够处理鼠标滚轮事件。同时,可能还会有`<link>`标签引用一个CSS文件来设置图片的基本样式和布局。 接着,`wheel.js`文件是实现...
本文将深入探讨图像处理中的几个重要概念:图像缩放、滤波、增强、锐化和旋转,以及它们在C语言中的实现。 首先,图像缩放是调整图像尺寸的过程,可以放大或缩小图片。常见的方法有最近邻插值和双线性插值。最近邻...
图片缩放是一种图像处理技术,通过改变图像的像素尺寸来调整其大小。在MFC中,我们可以利用GDI(Graphics Device Interface)或GDI+来进行图像处理,包括缩放。GDI提供了基本的绘图功能,而GDI+则提供了更多的高级...
这个"scrollview图片的缩放处理"主题主要涉及到以下几个关键知识点: 1. **ScrollView与ImageView的组合**: 当我们需要在ScrollView中显示一张大图,尤其是需要用户能够放大查看细节时,通常会将ImageView放入...
总之,图片缩放是一个涉及像素处理的重要环节,双线性内插值算法是其中一种有效的技术,通过加权平均相邻像素的方式提高了缩放的精确性和视觉效果。在实际应用中,还可以结合其他高级算法,如三次卷积插值、 lanczos...
在提供的压缩包文件中,"drag_ScrollViewer_from_wpfhome.sln"可能是一个包含项目解决方案的文件,它可能包含了实现图片缩放功能的源代码。"drag_ScrollViewer_from_wpfhome.sln.cache"和"drag_ScrollViewer_from_...
在C#编程环境中,开发一个图片缩放和移动程序是一项常见的任务,特别是在图形用户界面(GUI)应用中。本程序是在.NET Framework 3.5环境下构建的,这意味着它利用了该框架提供的丰富的类库和功能。尽管如此,由于C#...
在Qt框架中,图片缩放是一项常见的图像处理任务,它涉及到图形用户界面(GUI)的开发,特别是当我们要展示或操作图像时。Qt提供了一系列的类和方法来帮助开发者实现这个功能。以下将详细介绍如何使用Qt来实现图片的...
在C++中,可以使用OpenCV库等图像处理库来实现图片缩放功能,它们提供了相应的API接口供开发者调用。 其次,“图片旋转”是指将图像绕某个点进行旋转,这个点通常为图像的中心。旋转操作同样需要考虑图像质量的保持...
在网页设计中,图片缩放和拖动是增强用户体验的重要功能。用户可以通过这些交互操作来...文件“图片拖动效果”可能包含了一个实现这一功能的示例代码,通过学习和理解这个例子,可以更好地掌握图片缩放拖动的实现方法。
总之,图片缩放是图像处理中一个基础但重要的功能。开发者可以通过多种方式实现,包括使用平台提供的组件特性,或是自定义算法。通过分析和学习"imageViewdemo"项目,可以深化对这一主题的理解,并为实际开发提供...