导航:首页 > 编程语言 > java缩小图片

java缩小图片

发布时间:2025-03-08 08:00:16

① 怎么用java代码放大或缩小图片不失真。

放大图像不会导致失真,而缩小图像将不可避免的失真。Java中也同样是这样。但java提供了4个缩放的微调选项。image.SCALE_SMOOTH //平滑优先image.SCALE_FAST//速度优先image.SCALE_AREA_AVERAGING //区域均值image.SCALE_REPLICATE //像素复制型缩放image.SCALE_DEFAULT //默认缩放模式调用方法Image new_img=old_img.getScaledInstance(1024, 768, Image.SCALE_SMOOTH);得到一张缩放后的新图。怎么用java代码放大或缩小图片不失真。

② 如何用Java实现图形的放大和缩小

java实现图形的放大和缩小,其实就是在画图时,改变图片的长和宽。以下代码参考一下:


importjava.awt.Graphics;
importjava.awt.MouseInfo;
importjava.awt.Point;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.io.File;

importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.filechooser.FileNameExtensionFilter;

,ActionListener{

intx=0;
inty=0;
File[]selectedFiles=null;
intfileIndex=0;
intwidth=200;
intheight=200;

publicApp(){

setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(400,300);
setResizable(false);
getContentPane().setLayout(null);

JPanelpanel=newImagePanel();
panel.setBounds(12,40,370,218);
getContentPane().add(panel);

addMouseListener(this);
JButtonbtnBrowse=newJButton("Browse");
btnBrowse.addActionListener(this);
btnBrowse.setBounds(12,9,91,21);
getContentPane().add(btnBrowse);
setVisible(true);
}

publicstaticvoidmain(String[]args){
newApp();
}

publicvoidactionPerformed(ActionEvente){
JFileChooserchooser=newJFileChooser();
chooser.setMultiSelectionEnabled(true);
FileNameExtensionFilterfilter=newFileNameExtensionFilter(
"JPG&GIFImages","jpg","gif");
//设置文件类型
chooser.setFileFilter(filter);
//打开选择器面板
intreturnVal=chooser.showOpenDialog(this);
if(returnVal==JFileChooser.APPROVE_OPTION){
selectedFiles=chooser.getSelectedFiles();
repaint();
}
}

publicvoidmouseClicked(MouseEvente){

}

publicvoidmouseEntered(MouseEvente){

}

publicvoidmouseExited(MouseEvente){

}

publicvoidmousePressed(MouseEvente){
Pointpoint=MouseInfo.getPointerInfo().getLocation();
x=point.x;
y=point.y;
}

publicvoidmouseReleased(MouseEvente){
Pointpoint=MouseInfo.getPointerInfo().getLocation();
intthisX=point.x;
intthisY=point.y;
System.out.println("thisX="+thisX+""+"thisY="+thisY);
if((y-thisY<20&&y-thisY>0)
||(y-thisY<0&&y-thisY>-20)){
//Y在20范围内移动认为是水平移动
if(x<thisX){
//right
if(selectedFiles!=null
&&fileIndex<selectedFiles.length-1){
fileIndex++;
}
}else{
//left
if(selectedFiles!=null&&fileIndex>0){
fileIndex--;
}
}
}else{
if(x<thisX){
//右下
width+=20;
height+=20;
}else{
//左上
width-=20;
height-=20;
}
}

repaint();
}

classImagePanelextendsJPanel{

publicvoidpaint(Graphicsg){
super.paint(g);

if(selectedFiles!=null){
ImageIconicon=newImageIcon(selectedFiles[fileIndex]
.getPath());
g.drawImage(icon.getImage(),0,0,width,height,this);
}
}
}
}

③ java中怎么设置大小图片

具体步骤如下所示:

1、打开电脑,进入软件中,编写设置大小的代码,代码如下所示。

④ java图片压缩不失真的方法-java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

java是怎么实现等比例缩小图片而不失真的啊?

按照等比例的长宽进行缩放就可以了呀,就好像你打开一个图片,一般都有缩放功能,原理是一样的,等比例的缩放,关键像素还是存在的。

java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

也就是图片压缩,可以不修改任何大小的压缩(速度快),也可等比例修改大小压缩(较慢)

下面这是一段等比例缩小图片的方法。

publicStringcompressPic(StringinputDir,StringoutputDir,

StringinputFileName,StringoutputFileName,intwidth,

intheight,booleangp,Stringhzm){

try{

if(!()){

return"";

}

Imageimg=(image);

//判断图片格式是否正确

if((null)==-1){

return"no";

}else{

intnewWidth;intnewHeight;

//判断是否是等比缩放

if(gp==true){

//为等比缩放计算输出的图片宽度及高度

doublerate1=((double)(null))/(double)width;

doublerate2=((double)(null))/(double)height;

//根据缩放比率大的进行缩放控制

doublerate=rate1>rate2?rate1:rate2;

newWidth=(int)(((double)(null))/rate);

newHeight=(int)(((double)(null))/rate);

}else{

newWidth=(null);//输出的图片宽度

newHeight=(null);//输出的图片高度

}

BufferedImagetag=newBufferedImage((int)newWidth,(int)newHeight,_INT_RGB);

/*

*_SMOOTH的缩略算法生成缩略图片的平滑度的

*优先级比速度高生成的图片质量比较好但速度慢

*/

Imageim=(newWidth,newHeight,_SMOOTH);

().drawImage(im,0,0,null);

FileOutputStreamout=newFileOutputStream(outputDir+outputFileName);

//JPEGImageEncoder可适用于其他图片类型的转换

JPEGImageEncoderencoder=(out);

(tag);

();

}

}catch(IOExceptionex){

();

}

return"ok";

}

求助java压缩图片存储大小的方法

可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:

public_tatic_oolean_ompressPic(String_rcFilePath,_tring_escFilePath)_hrows_OException_

____File_ile=_ull;

____BufferedImage_rc=_ull;

____FileOutputStream_ut=_ull;

____ImageWriter_mgWrier;

____ImageWriteParam_mgWriteParams;

____//_付ㄐ赐计姆绞轿_jpg

____imgWrier=("jpg").next();

____imgWriteParams=_ew(

________null);

____//_褂醚顾,必须指定压缩方式为MODE_EXPLICIT

____(_EXPLICIT);

____//_饫镏付ㄑ顾酰某潭,参数qality是取值0~1范围内,

____((float)1);

____(_DISABLED);

____ColorModel_olorModel=(new_ile(srcFilePath)).getColorModel();//();

____//_付ㄑ顾跏笔褂玫纳誓J

//____(new(

//________colorModel,(16,16)));

____(new(

________colorModel,(16,16)));

____try_

______if(isBlank(srcFilePath))_

________return_alse;

______}_lse_

________file=_ew_ile(srcFilePath);(());

________src=(file);

________out=_ew_ileOutputStream(descFilePath);

________();

________//_匦胂戎付_out值,才能调用write方法,_mageOutputStream可以通过任何

________//_utputStream构造

________((out));

________//_饔_rite方法,就可以向输入流写图片

________(null,_ew_IOImage(src,_ull,_ull),

____________imgWriteParams);

________();

________();

______}

____}_atch(Exception_)_

______e.printStackTrace();

______return_alse;

____}

____return_rue;

__}

public_tatic_oolean_sBlank(String_tring)_

____if(string==_ull_|()==0_|().equals(""))_

______return_rue;

____}

____return_alse;

__}

⑤ java上传图片 生成缩略图,如果上传的图片尺寸比较小就压缩处理

//将图按比例缩小。
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH分别表示目标长和宽
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
//这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
//则将下面的if else语句注释即可
if(sx>sy)
{
sx = sy;
targetW = (int)(sx * source.getWidth());
}else{
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}

public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);

}

public static void main (String argv[]) {
try{
//参数1(from),参数2(to),参数3(宽),参数4(高)
saveImageAsJpg("C:\\Documents and Settings\\xugang\\桌面\\tmr-06.jpg",
"C:\\Documents and Settings\\xugang\\桌面\\2.jpg",
120,120);
} catch(Exception e){
e.printStackTrace();
}

}

阅读全文

与java缩小图片相关的资料

热点内容
lcd单片机驱动 浏览:643
通达信主力拉升出货指标公式源码 浏览:635
廉洁pdf 浏览:16
批量用修改多个文件夹及子目录 浏览:315
王者每个服务器爆满怎么办 浏览:947
安卓手机如何清除所有的数据 浏览:978
激光打标机加密狗驱动无法启动 浏览:908
硅谷程序员题库 浏览:558
安卓系统怎么开车模式 浏览:940
网剧程序员那么可爱15集完整版 浏览:172
pdf怎么生成 浏览:934
pythondict树 浏览:582
ilo2命令 浏览:292
会饮pdf 浏览:88
软件加密到哪里去了 浏览:604
nas可以做云服务器吗 浏览:623
app利率怎么算 浏览:8
广电运通程序员 浏览:568
程序员放弃后会怎样 浏览:189
河北模具编程 浏览:192