社区
Java SE
帖子详情
哪位知道如何用JAVA进行图形文件的缩放? 是使用JAVA2D 或是有第三方的软件?
haichuang
2002-06-10 08:12:21
要求必须可以在 Solaris 2.8下使用的.
谢谢!
...全文
31
6
打赏
收藏
哪位知道如何用JAVA进行图形文件的缩放? 是使用JAVA2D 或是有第三方的软件?
要求必须可以在 Solaris 2.8下使用的. 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haichuang
2002-06-18
打赏
举报
回复
非常感谢几位对我的帮助,此问题已经解决,现将解决方案列出,希望对各位有用:
================================================
import javax.imageio.*;
import javax.imageio.stream.*;
import java.io.*;
import java.util.*;
import java.awt.image.*;
import java.awt.image.renderable.*;
import java.awt.Image;
import javax.media.jai.*;
public class ImageTools {
public static final int SCALE_TYPE_NORMAL=0;
public static final int SCALE_TYPE_WIDTH=1;
public static final int SCALE_TYPE_HEIGHT=2;
public static final int SCALE_TYPE_AUTO=3;
public ImageTools() {
}
/*
public static boolean resize(int width, int height, String srcFile, String desFile) throws IOException{
File src=new File(srcFile);
ImageInputStream iis = ImageIO.createImageInputStream(src);
ImageReader ir = (ImageReader)ImageIO.getImageReaders(iis).next();
String fileFormat = ir.getFormatName();
BufferedImage sImage=ImageIO.read(src);
iis.close();
File des=new File(desFile);
//Image sImage = java.awt.Toolkit.getDefaultToolkit().getImage(srcFile);
Image sImage = ImageIO.read(src);
Image dImg=sImage.getScaledInstance(width,height,sImage.SCALE_DEFAULT);
BufferedImage dImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
dImage.getGraphics().drawImage(dImg,0,0,null);
return ImageIO.write(dImage,"jpg",des);
}
*/
private static RenderedOp getImage(String srcFile){
return JAI.create("fileload",srcFile);
}
public static boolean resize(float xscale, float yscale, float xtrans, float ytrans, Interpolation interp,String srcFile, String desFile){
RenderedOp ro = getImage(srcFile);
ParameterBlock pb = new ParameterBlock();
pb.addSource(ro);
pb.add(xscale);
pb.add(yscale);
pb.add(xtrans);
pb.add(ytrans);
if (interp == null) {
interp = Interpolation.getInstance(Interpolation.INTERP_NEAREST);
}
pb.add(interp);
ro=JAI.create("scale", pb);
JAI.create("filestore",ro,desFile,"jpeg",null);
return true;
}
//*/
public static boolean resize(int width, int height, String srcFile, String desFile, int type){
RenderedOp ro = getImage(srcFile);
float xscale=1.0f;
float yscale=1.0f;
switch(type){
case 0:
xscale = (float)width/(float)ro.getWidth();
yscale = (float)height/(float)ro.getHeight();
break;
case 1:
xscale = (float)width/(float)ro.getWidth();
yscale=xscale;
break;
case 2:
yscale = (float)height/(float)ro.getHeight();
xscale = yscale;
break;
case 3:
if(ro.getHeight()>ro.getWidth()){
yscale = (float)height/(float)ro.getHeight();
xscale = yscale;
}
else{
xscale = (float)width/(float)ro.getWidth();
yscale = xscale;
}
break;
}
return resize(xscale,yscale,0.0F,0.0F,null,srcFile,desFile);
}
public static void main(String[] args) throws IOException{
int width = Integer.parseInt(args[0]);
int height = Integer.parseInt(args[1]);
long sTime = System.currentTimeMillis();
ImageTools.resize(width,height,args[2],args[3],ImageTools.SCALE_TYPE_AUTO);
long dTime = System.currentTimeMillis();
System.out.println("use time: "+(dTime-sTime));
}
}
========================================
此例中使用了两种方法,分别是使用JAI和ImageIO,但是使用ImageIO方法需要操作系统有图形支持,因为我的Solaris未安装XWindows所以不能用.而JAI则需要安装对应的包.各位可以做为参考.
haichuang
2002-06-12
打赏
举报
回复
建立了Image对象后如何再将它按指定格式写入文件呢?
fightboy
2002-06-12
打赏
举报
回复
对于jdk1。3
http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Encode.doc.html
对于jdk1。4
http://java.sun.com/j2se/1.4/docs/guide/imageio/spec/apps.fm4.html
我还没试出来,结果出来了可否给告知一下!
(注意写了文件要flush并close)
haichuang
2002-06-11
打赏
举报
回复
是这样的,假设我有一个800*600的图象文件,而我现在要把它们缩小到200*100尺寸, 就是这样.
至于为什么说根在Solaris 2.8下使用是因为有的JAVA工具是使用了本地库技术的,如果只有WINDOWS版本的本地库而没有Solaris下的本地库,它照样不能用.
turbochen
2002-06-11
打赏
举报
回复
使用Image类.
Image getScaledInstance(int width, int height, int hints)
建立一个缩放过的图像.
fightboy
2002-06-10
打赏
举报
回复
可以解释一下: 图形文件的缩放 是什么意思?
还有 java 不是和平台无关吗?为甚么 要说 在Solaris 2.8下使用的??
Java
中如何
使用
Draw
2D
和SWT绘图
可以
使用
Draw
2D
编写自己的用来绘制图形的
Java
代码,这有助于您将精力集中于
缩放
代码和绘制代码上,把其他与绘制相关的工作留给Draw
2D
和SWT。您还可以通过
使用
所选择的Draw
2D
图形来控制您的图形的外观。Draw
2D
简化了...
java
图形图象处理.rar
对于更复杂的图像处理需求,开发人员可以利用
第三方
库和工具,如OpenCV、
Java
CV等,实现更高级的图像处理功能。 应用领域:
Java
图形图像处理技术在各个领域都有广泛的应用,包括但不限于数字图像处理、计算机视觉...
java
2d
图形_
java
图形和
java
2d
概述 2
Java
2D
拥有强大的二维图形处理...
Java
中Graphics
2D
类 实例绘图-三次曲线 任务要求 2 1、
使用
java
.awt.geom包中的CubicCurve
2D
的静态内部类构造方 法Double()或Float()创建三次曲线对象绘制图形。...
JAVA
2D
...
《
Java
游戏编程原理与实践教程》读书笔记(第3章——
Java
图形处理和
Java
2D
)
第3章
Java
图形处理和
Java
2D
3.1
Java
图形坐标系统和图形上下文 3.2 Color类 3.3 Font类和FontMetrics类 3.3.2 FontMetrics类 3.4 常用的绘图方法 3.4.1 绘制直线 3.4.2 绘制矩形 3.4.3 绘制椭圆 3.4.4 ...
Java
第三方
工具库/包汇总
一、科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并...JSci:
Java
科学对象(JSci)开放源代码项目是 Durham(英国 Durham)大学粒子理论中心的三年级研究生 Mark Hale 创立的。JSci
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章