import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.Graphics;
import java.awt.color.ColorSpace;
import javax.imageio.ImageIO;
public class ChangeImageSize
{
/** *//**
* 缩放图像
* @param srcImageFile 源图像文件地址
* @param result 缩放后的图像地址
* @param scale 缩放比例
* @param flag 缩放选择:true 放大; false 缩小;
*/
public static void scale(String srcImageFile, String result, int scale, boolean flag)
{
try
{
BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
int width = src.getWidth(); // 得到源图宽
int height = src.getHeight(); // 得到源图长
if (flag)
{
// 放大
width = width * scale;
height = height * scale;
}
else
{
// 缩小
width = width / scale;
height = height / scale;
}
Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(image, 0, 0, null); // 绘制缩小后的图
g.dispose();
ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流
}
catch (IOException e)
{
e.printStackTrace();
}
}
/** *//**
* 图像切割
* @param srcImageFile 源图像地址
* @param descDir 切片目标文件夹
* @param destWidth 目标切片宽度
* @param destHeight 目标切片高度
*/
public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight)
{
try
{
Image img;
ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));
int srcWidth = bi.getHeight(); // 源图宽度
int srcHeight = bi.getWidth(); // 源图高度
if (srcWidth > destWidth && srcHeight > destHeight)
{
Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);
destWidth = 200; // 切片宽度
destHeight = 150; // 切片高度
int cols = 0; // 切片横向数量
int rows = 0; // 切片纵向数量
// 计算切片的横向和纵向数量
if (srcWidth % destWidth == 0)
{
cols = srcWidth / destWidth;
}
else
{
cols = (int) Math.floor(srcWidth / destWidth) + 1;
}
if (srcHeight % destHeight == 0)
{
rows = srcHeight / destHeight;
}
else
{
rows = (int) Math.floor(srcHeight / destHeight) + 1;
}
// 循环建立切片
// 改进的想法:是否可用多线程加快切割速度
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(j * 200, i * 150, destWidth, destHeight);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", new File(descDir + "pre_map_" + i + "_" + j + ".jpg"));
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
/** *//**
* 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)
*/
public static void convert(String source, String result)
{
try
{
File f = new File(source);
f.canRead();
f.canWrite();
BufferedImage src = ImageIO.read(f);
ImageIO.write(src, "JPG", new File(result));
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** *//**
* 彩色转为黑白
* @param source
* @param result
*/
public static void gray(String source, String result)
{
try
{
BufferedImage src = ImageIO.read(new File(source));
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
src = op.filter(src, null);
ImageIO.write(src, "JPEG", new File(result));
}
catch (IOException e)
{
e.printStackTrace();
}
}
/** *//**
* @param args
*/
public static void main(String[] args)
{
scale("D:\100CASIO\CIMG0001.JPG","C:\Documents and Settings\ibm\桌面\image.jpg",10,false);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于JAVA的在线聊天软件(代码+数据库文件).
共105个文件
class:57个
jpg:18个
java:16个
4星 · 超过85%的资源 需积分: 10 109 下载量 40 浏览量
2008-10-27
17:51:04
上传
评论 4
收藏 335KB RAR 举报
温馨提示
基于JAVA的在线聊天软件(代码+数据库文件). 代码做了很好的封装和分层,界面非常类似QQ,是JAVA初学者不可多得的好资料
资源推荐
资源详情
资源评论
收起资源包目录
基于JAVA的在线聊天软件(代码+数据库文件). (105个子文件)
Client.class 15KB
Server.class 7KB
Server$ServerThreadSingle.class 6KB
Login.class 6KB
UserInfo.class 5KB
FindFriend.class 5KB
Client$recThread.class 5KB
ChatBase.class 5KB
Info.class 4KB
Chat.class 4KB
User.class 4KB
Login$4.class 3KB
ChatGroup.class 3KB
Chat$1.class 2KB
SqlHelper.class 2KB
ImageList.class 2KB
Server$ServerThread.class 2KB
UserInfo$1.class 2KB
FindFriend$4.class 2KB
Info$1.class 2KB
Group.class 2KB
Client$14.class 1KB
Friend.class 1KB
Server$1.class 1KB
Client$clientMove.class 1KB
Client$6.class 1KB
FindFriend$1.class 1KB
Client$2.class 1KB
FindFriend$3.class 1KB
Client$7.class 1KB
ChatGroup$WindowCloser.class 1KB
Client$13.class 1KB
MD5.class 1KB
Login$1.class 1KB
Client$1.class 1KB
Chat$WindowCloser.class 1KB
Client$8.class 1KB
Client$5.class 961B
ImageList$1.class 937B
Client$4.class 895B
Client$11.class 860B
Client$9.class 852B
FindFriend$2.class 839B
Client$3.class 790B
Client$12.class 774B
Client$10.class 766B
Server$WindowCloser.class 759B
Client$WindowCloser.class 737B
UserInfo$2.class 697B
Login$3.class 697B
Login$2.class 695B
Info$3.class 631B
FindFriend$5.class 613B
ImageList$2.class 606B
UserInfo$3.class 600B
Info$2.class 479B
GroupList.class 270B
.classpath 226B
Thumbs.db 19KB
Thumbs.db 8KB
Client.java 22KB
Server.java 10KB
Login.java 7KB
FindFriend.java 5KB
UserInfo.java 4KB
ChatBase.java 4KB
Info.java 4KB
User.java 3KB
Chat.java 3KB
ChatGroup.java 2KB
ImageList.java 1KB
SqlHelper.java 1KB
Group.java 886B
Friend.java 846B
MD5.java 770B
GroupList.java 52B
top.jpg 25KB
1.jpg 13KB
qun.jpg 11KB
2.jpg 11KB
7.jpg 10KB
5.jpg 10KB
4.jpg 10KB
3.jpg 10KB
6.jpg 10KB
8.jpg 10KB
2.jpg 2KB
7.jpg 2KB
4.jpg 2KB
3.jpg 2KB
6.jpg 2KB
5.jpg 2KB
1.jpg 2KB
8.jpg 2KB
ICQ_Log.LDF 1024KB
ICQ_Data.MDF 1024KB
find.png 4KB
.project 383B
java图片处理.txt 6KB
10000to10001.txt 712B
共 105 条
- 1
- 2
资源评论
- xiaoya02152012-05-19下载后 运行没有现实聊天室的主页面
- jingbaby872014-06-24没有用数据库,部分代码参考,谢谢分享
武汉豪哥
- 粉丝: 4
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功