社区
Java SE
帖子详情
使用java处理图形文件的问题
bluemouse
2003-12-19 10:04:18
请问高手,如何使用java将一个任意大小的图片等比例缩减至至少其中一边等于一固定数值(如100),我曾经用.net实现过,现在程序要用java改写,不知道java中如何实现。
先谢谢了 :)
...全文
81
6
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
6 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wobelisk
2003-12-19
graphics2D.scale
打赏
举报
回复
赞
bluemouse
2003-12-19
参照网上的例子,自己解决了,实现见下 :
有同样需要的朋友可以参考调用 :)
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.image.AffineTransformOp;
import javax.imageio.ImageIO;
import java.awt.geom.AffineTransform;
public class imgTest
{
public static void main(String args[]) throws Exception
{
CreateThumbnail();
System.in.read();
}
public static boolean CreateThumbnail() throws Exception
{
String tofile = "d:\\b";
String imgfile = "d:\\a.jpg";
// ext是图片的格式 gif JPG 或png
String ext="";
double Ratio=0.0;
File F = new File(imgfile);
if (!F.isFile())
throw new Exception(F+" is not image file error in CreateThumbnail!");
// 首先判断上传的图片是gif还是JPG ImageIO只能将gif转换为png
if (isJpg(imgfile)){
ext="jpg";
}else{
ext="png";
}
File ThF = new File(tofile+"."+ext);
BufferedImage Bi = ImageIO.read(F);
// 假设图片宽 高 最大为120 120
Image Itemp = Bi.getScaledInstance (120,120,Image.SCALE_SMOOTH);
if ((Bi.getHeight()>100) || (Bi.getWidth()>100)){
if (Bi.getHeight()>Bi.getWidth())
Ratio = 100.0/Bi.getHeight();
else
Ratio = 100.0/Bi.getWidth();
}
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
Itemp = op.filter(Bi, null);
try {
ImageIO.write((BufferedImage)Itemp, ext, ThF);
}catch (Exception ex) {
throw new Exception(" ImageIo.write error in CreatThum.: "+ex.getMessage());
}
return (true);
}
/**
* @param imgfile
* @return
*/
private static boolean isJpg(String _s)
{
String _ext;
_ext=_s.substring(_s.indexOf(".")+1,_s.length()).toLowerCase();
if (_ext.equals("jpg"))
{
return true;
}
return false;
}
}
打赏
举报
回复
赞
cql0007
2003-12-19
这些计算应该要你自己去计算得出一个公式的吧,没必要要用到什么特殊的具体的类吧.
JAVA里好象没有这样的类.
其实这和别的语言实现这个功能是一样的啊,首先把图的尺寸算好,然后画出来就行了.
画图的方法:
g.drawImage(image,x,y,width,height,this)
image为该图,x,y为该图开始绘画的起始坐标,width和height为画出该图的宽和高(你的大小控制就在这里了)
打赏
举报
回复
赞
bluemouse
2003-12-19
up一下
打赏
举报
回复
赞
bluemouse
2003-12-19
算比例这个我明白,我想知道具体应该用到java的哪个类?能否说一下思路呢?
打赏
举报
回复
赞
cql0007
2003-12-19
一缩放后其中一边就变成100这样的?
例如图片本来是宽500,高400的.
如果是把500的边变成100,算出它的缩放比例,scaleX=500/100,则高为400/scaleX就是了.
打赏
举报
回复
赞
相关推荐
java
处理
图形文件
关于
java
处理
图形文件
的资料 ,解决的是图像的显示等
Java
Swing 图形界面开发(目录)
Java
Swing 图形界面(GUI)开发基础教程(目录)
Java
GUI——
Java
图形用户界面
Java
GUI——
Java
图形用户界面 1、
Java
GUI概述 1.1、GUI的前世今生 早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。如:Windows中的DOS窗口。后来,Apple公司率先在电脑的操作系统中...
java
实验报告(图形界面编程及文件读写)
《
Java
程序设计》实 验 报 告(三) 所
使用
的工具软件及环境: 环境:Windows 8.1;jdk 1.8; 工具:eclipse ...编写图形界面程序,接受用户输入的5个浮点数据和一个文件目录名,将这5个数据保存在该文件...
Java
实现简易图形编辑系统
目录1 实现过程1.1 采用抽象工厂设计模式创建图形对象1.2 采用组合设计模式设计直线、符号、字符串、方框及复合图形1.3 采用迭代器设计模式访问复合图形中的各个子图形1.4 采用观察者设计模式实现图形的拖动、放大...
发帖
Java SE
加入
微信扫一扫
点击复制链接
分享社区
下载分享明细
6.2w+
社区成员
30.7w+
社区内容
Java 2 Standard Edition
社区管理员
申请成为版主
帖子事件
创建了帖子
2003-12-19 10:04
社区公告
暂无公告