- 浏览: 132946 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yaoweinan:
没有.....
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
马文涛:
我也发现这个问题了,你找到解决办法了吗?
Itext 5.4.0 生成PDF中文不报错,Adobe 不显示 -
coding1688:
博主辛苦了,也可以参考一下这篇文章:四步轻松搞定瀑布流布局ht ...
瀑布流布局个人实现 -
yaoweinan:
嘿嘿,那个只是最笨的办法,实际上是不行的,现在一般的都有sw ...
文件上传(无刷新,带进度条,带网速)下载完整 -
javazzu:
我为啥不行呢
文件上传(无刷新,带进度条,带网速)下载完整
package dwr.demo;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImgReSize {
private JFrame frame;
private JButton chooseImgDirBtn;
private JTextField ImgDirLab;
private JButton saveImgDirBtn;
private JTextField saveDirLab;
private JButton ok_btn;
private JButton reset_btn;
private JTextField w=new JTextField();
private JTextField h=new JTextField();
private JTextField left=new JTextField(2);
private JTextField top=new JTextField(2);
private JTextField cutW=new JTextField(2);
private JTextField cutH=new JTextField(2);
private JPanel pro=new JPanel();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ImgReSize();
}
ImgReSize(){
frame=new JFrame("图片批量改变大小");
frame.setBounds(Toolkit.getDefaultToolkit().getScreenSize().width/2-150,Toolkit.getDefaultToolkit().getScreenSize().height/2-100,300, 200);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.add(chooceImgDir);
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
ImgDirLab=new JTextField();ImgDirLab.setColumns(15);ImgDirLab.setEditable(false);
frame.add(ImgDirLab);
chooseImgDirBtn=new JButton("需转换的目录");
chooseImgDirBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
FileDialog chooceImgDir=new FileDialog(new JFrame(),"请选择要转换的文件目录",FileDialog.LOAD);
chooceImgDir.setVisible(true);
ImgDirLab.setText(chooceImgDir.getDirectory());
chooseImgDirBtn.setEnabled(false);
}});
frame.add(chooseImgDirBtn);
saveDirLab=new JTextField();saveDirLab.setColumns(15);saveDirLab.setEditable(false);
frame.add(saveDirLab);
saveImgDirBtn=new JButton("保存的目录");
saveImgDirBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
FileDialog chooceImgDir=new FileDialog(new JFrame(),"请选择要保存的文件目录",FileDialog.LOAD);
chooceImgDir.setVisible(true);
saveDirLab.setText(chooceImgDir.getDirectory());
saveImgDirBtn.setEnabled(false);
}});
frame.add(saveImgDirBtn);
frame.add(new JLabel("输入大小:"));
w.setColumns(3);h.setColumns(3);
frame.add(w);frame.add(new JLabel("X"));
frame.add(h);
ok_btn=new JButton("转换");
ok_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(w.getText().equals("")||h.getText().equals("")||ImgDirLab.getText().equals("")||saveDirLab.getText().equals(""))return;
final int width=Integer.parseInt(w.getText());
final int hieght=Integer.parseInt(h.getText());
final int Ctop=Integer.parseInt(top.getText());
final int Cleft=Integer.parseInt(left.getText());
final int CutW=Integer.parseInt(cutW.getText());
final int CutH=Integer.parseInt(cutH.getText());
final String basePath=ImgDirLab.getText();
final String exportPath=saveDirLab.getText();
File file = new File(basePath);
File []files=file.listFiles();
if(files!=null){
float jg=(float) (frame.getWidth()/(files.length*1.0));
for(int i=0;i<files.length;i++){
File tmp=files[i];
if(tmp.isFile()){
String name=tmp.getName();
//System.out.println(tmp.getName());
String syn=name.substring(name.indexOf('.'));
if(syn!=null&&(syn.equalsIgnoreCase(".GIF")||syn.equalsIgnoreCase(".PNG")||syn.equalsIgnoreCase(".JPG"))){
///System.out.println(name);
try {
FileInputStream in=new FileInputStream(tmp);
byte[] b=new byte[2*1024*1024];
in.read(b);
in.close();
byte[]tb1=this.cut(b,Ctop,Cleft,CutW,CutH);
byte[]tb=this.fixPic(tb1,width,hieght);
FileOutputStream out=new FileOutputStream(exportPath+name);
out.write(tb);
out.flush();
out.close();pro.setSize((int)((i+1)*jg), 15);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
System.out.println("转换完成!");
}
private byte[] fixPic(byte[] bts,int w,int h){
try {
Image img=ImageIO.read(new ByteArrayInputStream(bts));
BufferedImage tag = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(img.getScaledInstance(w, h, Image.SCALE_SMOOTH), 0, 0, null);
ByteArrayOutputStream out=new ByteArrayOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
byte[] by= out.toByteArray();
out.close();
return by;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private byte[] cut(byte[] bts,int left,int top,int w,int hight){
try {
Iterator readers = ImageIO.getImageReadersByFormatName("jpg");
System.out.println(readers);
ImageReader reader = (ImageReader)readers.next();
InputStream source=new ByteArrayInputStream(bts);
ImageInputStream iis = ImageIO.createImageInputStream(source);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
int imageIndex = 0;
int half_width = reader.getWidth(imageIndex)/2;
int half_height = reader.getHeight(imageIndex)/2;
Rectangle rect = new Rectangle(60, 60, 100, 100);
param.setSourceRegion(rect);
BufferedImage bi = reader.read(0,param);
ByteArrayOutputStream out=new ByteArrayOutputStream();
ImageIO.write(bi, "jpg",out);
return out.toByteArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bts;
}
});
frame.add(ok_btn);
reset_btn=new JButton("重置");
reset_btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
ImgDirLab.setText("");
saveDirLab.setText("");
chooseImgDirBtn.setEnabled(true);
saveImgDirBtn.setEnabled(true);
}});
frame.add(reset_btn);
frame.add(new JLabel("裁剪位置:"));
frame.add(new JLabel("top:"));
frame.add(this.top);
frame.add(new JLabel("left:"));
frame.add(this.left);
frame.add(new JLabel("w:"));
frame.add(this.cutW);
frame.add(new JLabel("h:"));
frame.add(this.cutH);
pro.setBackground(Color.GREEN);pro.setLayout(null);
frame.add(pro);frame.add(pro);
frame.setVisible(true);
}
}
发表评论
-
写自己的框架,让别人笑掉大牙吧(IOC2)
2013-04-22 14:23 861上篇中主要使用配置文件来定义一些类实例之间的组织关系 ... -
关于java中对象属性值的校验的思考
2013-04-15 14:09 1510现在在java 开发中经常会遇到要交验某个obje ... -
java 动态编译及执行实现Web式java开发
2012-11-29 17:05 887废话不说,让大家等了这么久,先看看截图 : 编译 ... -
JXLayer 使用简单介绍
2012-11-01 17:25 1274JXLayer 是一个很好的Swing 控件装饰类库,其主要要 ... -
关于Jtextinpt 内容的限制
2012-09-28 15:00 756在JTextInput 限制输入内容,这个一般的通过按键输入进 ... -
构造中的多态
2012-08-25 23:19 816各位仁兄,前几日我在 ... -
Swing JtableModel 使用之旅
2012-07-29 03:25 993JTable 是我们一般展示数据的一个很好的Grid组建,个人 ... -
模版模式(TemplatePattern)
2012-07-15 11:08 752模版模式分为2个部分 1.抽象模版 2.具体模版 ... -
门面模式(Facade Pattern)
2012-06-10 19:37 924门面模式(Facade Pattern):门面模式在我个人感觉 ... -
代理模式例子
2012-06-04 15:07 939代理模式简单点就和现实中一样,只是代理实质性的还是别人在做。比 ... -
策略模式应对旅行中出现的问题
2012-06-04 14:21 811策略模式是针对在进行过程中出现一些问题的应对模式。一般可以分为 ... -
java 工厂模式简单介绍及例子
2012-06-03 23:16 1011java中工厂模式在java ee中经常碰见,是一种常见的模式 ... -
java 动态代理及自定义标注使用例子
2012-06-03 00:14 1159java中动态代理,在实际应用中有着很大的作用,譬如在一些类似 ... -
flex3 socket+java
2012-02-06 12:10 1028首先解决的问题是flex的沙箱问题,由于flex 连接服务器存 ... -
java 自定义注解
2012-01-30 16:09 794写道 package com.my;import j ... -
java System.Properties
2011-10-26 13:19 711使用Properties.getProperty方法的参数也可 ... -
JDK自带的实用工具native2ascii.exe
2011-10-26 09:21 806在做Java开发的时候, ... -
dom4j xml 简单操作
2011-10-24 11:02 661package com.my.until; import j ... -
装饰模式例子(模仿修改船只用途)
2011-08-28 20:31 694模仿一次出海旅行中船只的用途的动态调整 功能 写道 pac ... -
观察模式实现粉丝模仿明星说话
2011-08-28 15:05 813艺术圈 写道 package cn.watchermodel ...
相关推荐
欢迎使用《iPai图片批处理》5.8版! 《iPai 图片批处理》是一款旨在简化图片...摄像头拍照、屏幕截图、图片裁剪、移动图片、颜色矩阵、制作边框等更多功能使用技巧请关注我们的官方网站和论坛,这里不再一一列举。
按照目录对图像进行灰度化、缩放(比例默认为1/3)、空白处裁剪(裁剪掉图片多余的空白) =图像周边空白裁剪:按行和列统计图像四周的空白率,空白率过高的行和列将被裁剪掉(方法中设置为0.8,以灰度值大于0,9表示空白...
% 1、自动缩放并裁剪图片为指定比例和分辨率大小,以全屏适应数码相框 % 2、按照"序号+时间"重命名图片(时间从拍摄时间、修改时间等内容中按优先级顺序选择),这样不管按照修改时间还是按照文件名都能正确排序了 %...
按指定大小或尺寸压缩图片,图片转灰度黑白,MP3标签信息的显示与重写,给图片添加竖向/倒向/任意角度文字或图片水印,对图片进行相对/绝对、区域/保留/固定(圆角矩形、椭圆、圆形裁剪)、按大小、缩略缩放压缩、分切...
Light Image Resizer是一款老牌的图片批量调整大小的软件,支持图片批量添加水印,批量转换图像格式、调整图片大小、缩放裁剪,图片格式转换、重命名,排序;添加效果,旋转,自定义元数据,优化压缩图片,移除图片...
电脑图像工具箱,集成大部分常用的图片处理工具,...二维码图片批处理 王水印去除器 二维码生成器 多格式图像的增强 图像批里处理1 图片缩放器 图像倒影制作 图像批量处理2 图片裁边工具 Gif动画缩放工具 图像批量处理3
images-tools 基于 node-canvas、node-images 实现对图片的一些操作,包括放大、缩小、压缩、修改画布大小等。 功能 resize.js -> 修改图片画布大小 ...apis/frameAnimation.js -> node-canvas 裁剪图片,生成圆角图片
Light Image Resizer,批量调整图片大小工具,图片批量添加水印,批量转换图像格式、调整图片大小、缩放裁剪,图片格式转换、重命名,排序;添加效果,旋转,自定义元数据,优化压缩图片,移除图片背景。 软件特点 ...
FastStone Photo Resizer一款实用的批量图像转换、缩放软件,它还可以进行批量改名、裁剪、旋转,批量变换颜色深度,以及批量给图片增加文字水印。 【功能特点】 以批处理模式转换和重命名图像 支持JPEG、BMP...
本工具箱还提供了:图片压大小缩尺寸 按指定大小或尺寸压缩图片图片转灰度 MP3标签信息的显示与重写给图片添加文字或图片水印 对图片进行相对/绝对、区域/按大小/缩略缩放/切片等6种模式的智能批量裁剪对doc/ppt/txt...
按指定大小或尺寸压缩图片,图片转灰度,MP3标签信息的显示与重写,给图片添加竖向/倒向/任意角度文字或图片水印,对图片进行相对/绝对、区域、按大小、缩略缩放、分切分隔、贴边、拼合等9种模式的智能批量裁剪功能...
1. 加入“报名照”功能 , 简单轻松制作考试报名照,证件照,只需指定头像裁剪区域,自动按规格缩放和压缩大小,方便快捷! 同时,您可下载手机版的“光影报名照”(扫描二维码即可下载) 直接使用手机拍照...