图片压缩处理问题(紧急啊,各位高手帮忙解决一下,谢谢. 在线等待)

poyer 2003-07-30 02:13:29
有一张图片 120*90,不通过外部的工具,
在生成一张一样的图片,但是大小为 50*50,
该如何处理?
希望是jdk1.3的类
...全文
142 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
poyer 2003-07-31
  • 打赏
  • 举报
回复
揭帖,谢谢楼上几位的帮忙。
poyer 2003-07-30
  • 打赏
  • 举报
回复
再请问 cxjd(dong) ( )

MediaTracker mt = new MediaTracker(app);
try {
img=tk.getImage(InputDir+InputFileName);
mt.addImage(img, 0);
mt.waitForID(0);
}catch(Exception e) {
e.printStackTrace();
}

这段代码中的 MediaTracker起到一个什么样的作用?另waitForID(0)是不是在等待获得处理该图片的时间片或者信号灯?
poyer 2003-07-30
  • 打赏
  • 举报
回复
请问 cxjd(dong) ( )
你这个程序我试了一下,嗯,好用。谢谢先
另问一下这个有什么要求吗?或者对性能的处理上有什么影响吗?
Tomcat4 2003-07-30
  • 打赏
  • 举报
回复
直接给出图片的width和height来缩小不行吗?只不过会失真,会有什么区别吗?
poyer 2003-07-30
  • 打赏
  • 举报
回复
请问 alemjann(裸睡)
为什么只对 JPG、GIF 格式的图片有效?
另如果在Servlet中不是就没有办法实现了吗? 好像不支持swing
cxjd 2003-07-30
  • 打赏
  • 举报
回复
s_pic(原大图路径,生成小图路径,大图文件名,生成小图文件名,生成图片宽度,生成图片高度)
alemjann 2003-07-30
  • 打赏
  • 举报
回复
这个是JPGSize类
package ype.congh;
import javax.swing.*;
/**
* <p>Title: </p>
* <p>Description: 取得图片宽和高的值。只对 JPG、GIF 格式的图片有效</p>
* <p>Copyright: Copyright (c) 2002
* <p>Company: </p>
* @author
* @version 1.0
*/
public class JPGSize {
private int intWidth;
private int intHeight;
public JPGSize(String strFileName) {
ImageIcon imageA = new ImageIcon(strFileName);
intWidth=imageA.getIconWidth();
intHeight=imageA.getIconHeight();
}
/**
Description: 取得图片的宽度。
当返回值是"-1"时,表示图片格式错误或文件不存在
*/
public int getWidth() {
return intWidth;
}
/**
Description: 取得图片的高度
当返回值是"-1"时,表示图片格式错误或文件不存在
*/
public int getHeight() {
return intHeight;
}

/*
public static void main(String[] args) {
JPGSize JPGSize1 = new JPGSize(args[args.length]);
}
*/
}
hxzhappy 2003-07-30
  • 打赏
  • 举报
回复
http://www.chinajavaworld.com/bbsoffline/jinghuaforum21/5538.html

看看吧
好运!
alemjann 2003-07-30
  • 打赏
  • 举报
回复
import java.io.*;

/**
* <p>Title: </p>
* <p>Description:通过图片原始尺寸和给定目标尺寸,计算图片按比缩小后尺寸。只对 JPG、GIF 格式的图片有效</p>
* <p>Copyright: Copyright (c) 2002
* <p>Company: </p>
* @author
* @version 1.0
*/

public class ImgSizeConverter {

private int width;//转换后图片宽度
private int height;//转换后图片高度
private int imgW;//图片原始宽度
private int imgH;//图片原始高度

public ImgSizeConverter(int w, int h, String path){
/**
*引用JSPSize类,
*/
//System.out.println("w = "+w);
//System.out.println("h = "+h);
//System.out.println("path = "+path);
JPGSize jpgSize = new JPGSize(path);
float ratio;//给定的宽高比
float imgRatio;//原始的宽高比
imgW = jpgSize.getWidth();
imgH = jpgSize.getHeight();
//System.out.println("imgW = "+imgW);
//System.out.println("imgH = "+imgH);

if(imgW==-1||imgH==-1) {
//System.out.println("imgW & imgH = -1");
width = -1;
height = -1;
return;
}
if(imgW<=w && imgH<=h){
//System.out.println("imgW & imgH <= w & h");
width = imgW;
height = imgH;
return;
}

ratio = (float)w/(float)h;
//System.out.println("ratio = "+ratio);
imgRatio = (float)imgW/(float)imgH;
//System.out.println("imgRatio = "+imgRatio);
if(ratio == imgRatio) {
//System.out.println("ratio == imgRatio");
width = w;
height = h;
return;
}

if(ratio > imgRatio) {
//System.out.println("ratio > imgRatio");
height = h;
width = (int)((float)h*(float)imgW/(float)imgH);
return;
}

if(ratio < imgRatio) {
//System.out.println("ratio < imgRatio");
width = w;
height = (int)((float)w*(float)imgH/(float)imgW);
return;
}
}


/**
Description: 取得图片的宽度。
当返回值是"-1"时,表示图片格式错误或文件不存在
*/
public int getWidth() {
return width;
}


/**
Description: 取得图片的高度
当返回值是"-1"时,表示图片格式错误或文件不存在
*/
public int getHeight() {
return height;
}

public int getImgW() {
return imgW;
}

public int getImgH() {
return imgH;
}

}
cxjd 2003-07-30
  • 打赏
  • 举报
回复
package jd;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.sql.*;

public class small_pic{
String InputDir;
String OutputDir;
String InputFileName;
String OutputFileName;
int OutputWidth=80;
int OutputHeight=80;
int rate=0;

public small_pic(){
InputDir="";
OutputDir="";
InputFileName="";
OutputFileName="";
OutputWidth=80;
OutputHeight=80;
rate=0;
}

public void setInputDir(String InputDir){
this.InputDir=InputDir;
}

public void setOutputDir(String OutputDir){
this.OutputDir=OutputDir;
}

public void setInputFileName(String InputFileName){
this.InputFileName=InputFileName;
}

public void setOutputFileName(String OutputFileName){
this.OutputFileName=OutputFileName;
}

public void setOutputWidth(int OutputWidth){
this.OutputWidth=OutputWidth;
}

public void setOutputHeight(int OutputHeight){
this.OutputHeight=OutputHeight;
}

public void setW_H(int width,int height){
this.OutputWidth=width;
this.OutputHeight=height;
}

public String s_pic(){
BufferedImage image;
String NewFileName;
File file = new File(OutputDir+OutputFileName);
FileOutputStream tempout =null;
try{
tempout= new FileOutputStream(file);
}catch(Exception ex){
System.out.println(ex.toString());
}
Image img=null;
Toolkit tk=Toolkit.getDefaultToolkit();
Applet app=new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img=tk.getImage(InputDir+InputFileName);
mt.addImage(img, 0);
mt.waitForID(0);
}catch(Exception e) {
e.printStackTrace();
}

if(img.getWidth(null)==-1){
System.out.println(" can't read,retry!"+"<BR>");
}else{
double rate1=((double)img.getWidth(null))/OutputWidth+0.1;
double rate2=((double)img.getHeight(null))/OutputHeight+0.1;
double rate=rate1>rate2?rate1:rate2;

int new_w=(int)(((double)img.getWidth(null))/rate);
int new_h=(int)(((double)img.getHeight(null))/rate);
BufferedImage buffImg = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);

Graphics g = buffImg.createGraphics();

g.setColor(Color.white);
g.fillRect(0,0,new_w,new_h);

g.drawImage(img,0,0,new_w,new_h,null);
g.dispose();

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
try{
encoder.encode(buffImg);
tempout.close();
}catch(IOException ex){
System.out.println(ex.toString());
}
}
return "ok";
}

public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName){
this.InputDir=InputDir;
this.OutputDir=OutputDir;
this.InputFileName=InputFileName;
this.OutputFileName=OutputFileName;
return s_pic();
}

public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName,int width,int height){
this.InputDir=InputDir;
this.OutputDir=OutputDir;
this.InputFileName=InputFileName;
this.OutputFileName=OutputFileName;
setW_H(width,height);
return s_pic();
}
}
poyer 2003-07-30
  • 打赏
  • 举报
回复
各位高手帮帮忙吧,出外靠朋友啊。
谢谢,应该是有处理的办法的吧

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧