放大圖像不會(huì)導(dǎo)致失真,而縮小圖像將不可避免的失真。

在恩施土家等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,恩施土家網(wǎng)站建設(shè)費(fèi)用合理。
Java中也同樣是這樣。
但java提供了4個(gè)縮放的微調(diào)選項(xiàng)。
image.SCALE_SMOOTH
//平滑優(yōu)先
image.SCALE_FAST//速度優(yōu)先
image.SCALE_AREA_AVERAGING
//區(qū)域均值
image.SCALE_REPLICATE
//像素復(fù)制型縮放
image.SCALE_DEFAULT
//默認(rèn)縮放模式
調(diào)用方法
Image
new_img=old_img.getScaledInstance(1024,
768,
Image.SCALE_SMOOTH);
得到一張縮放后的新圖。
截取點(diǎn)代碼片斷,你自己看著改
修改圖片大小用getScaledInstance方法
BufferedImage?bimg?=?null;
Image?img?=?null;
int?width,?height;
try?{
bimg?=?ImageIO.read(u);
if(bimg.getWidth()??bimg.getHeight())
{
width?=?40;
height?=?bimg.getHeight()?*?width?/?bimg.getWidth();
}
else
{
height?=?40;
width?=?bimg.getWidth()?*?height?/?bimg.getHeight();
}
img?=?bimg.getScaledInstance(width,?height,?Image.SCALE_DEFAULT);
pre_image?=?bimg.getScaledInstance(width?*?10,?height?*?10,?Image.SCALE_DEFAULT);
}?catch?(IOException?e)?{
e.printStackTrace();
}
可以用Image中的getScaledInstance方法得到一個(gè)按照指定寬度和高度縮放以后的Image實(shí)例,然后再用setImage方法設(shè)置ImageIcon所顯示的圖像
一下示例:
×××××××××××××××××××××××××××××
import javax.swing.*;
import java.awt.*;
public class test extends JFrame
{
private ImageIcon img;
private JLabel showImg;
private final static int WIDTH=147;
private final static int HEIGHT=136;
public test()
{
img=new ImageIcon("1.png");
img.setImage(img.getImage().getScaledInstance(test.WIDTH,test.HEIGHT,Image.SCALE_DEFAULT));
showImg=new JLabel();
showImg.setIcon(img);
this.add(showImg,BorderLayout.CENTER);
this.setBounds(300,200,400,300);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String args[])
{
new test();
}
}
Class.getResource("")??? 返回的是當(dāng)前Class這個(gè)類所在包開始的位置
舉例
URL?url?=?XXXX.class.getResource("");
System.out.println(url);
//輸出file:/D:/space/workspace/JDK8/bin/a/
所以a文件下的圖片?不需要寫?/1.jpg??而直接寫?1.jpg
URL?url?=?XXXX.class.getResource("1.jpg");
ImageIcon對象的構(gòu)造方法很多
比如寫圖片路徑來構(gòu)造
相對路徑的寫法
ImageIcon?icon?=?new?ImageIcon("src\\a\\50.png");
完整路徑,
ImageIcon?icon?=?new?ImageIcon("D:\\space\\workspace\\JDK8\\src\\a\\50.png");
使用完整路徑,可以加載電腦上的其他位置的圖片
比如??ImageIcon?icon?=?new?ImageIcon("c:\\50.png");
在圖片上右鍵單擊------選擇Properties-------彈出對話框里有Location信息
這個(gè)信息就是完整路徑
//defaultSuffix是jpg
public static final boolean resizeImage(String fileName, String suffix) throws Exception {
boolean uploaded = false;
BufferedImage input;
if(suffix.equalsIgnoreCase("tif")||suffix.equalsIgnoreCase("tiff")||suffix.equalsIgnoreCase("png")) {
RenderedImage image = JAI.create("fileload", TurbineServlet.getRealPath(imageRoot + fileName+"."+suffix));
WritableRaster raster = image.copyData(null);
BufferedImage bi = new BufferedImage( image.getColorModel(), raster, true, null);
BufferedImage bi2 = new BufferedImage( maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi2.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.setBackground(java.awt.Color.WHITE);//把tiff和png轉(zhuǎn)換后的背景設(shè)置為白色
g2.fillRect(0, 0, maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth());
g2.drawImage(bi, 0, 0, maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth(), null);
PlanarImage pi = PlanarImage.wrapRenderedImage(bi2);
JAI.create("FileStore", pi, TurbineServlet.getRealPath(resizeRoot + fileName+"."+defaultSuffix).replaceAll("\\\\","\\\\\\\\"), "JPEG", new JPEGEncodeParam());
input = pi.getAsBufferedImage();
int w = maxThumbDimension, h = maxThumbDimension;
BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = output.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(input,0,0,w,h, null);
ImageIO.write(output, defaultSuffix, new File(TurbineServlet.getRealPath(thumbRoot + fileName+"."+defaultSuffix)));
}
else {
input = ImageIO.read(new File(TurbineServlet.getRealPath(imageRoot + fileName+"."+suffix)));
int w = maxThumbDimension, h = maxThumbDimension;
BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = output.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(input,0,0,w,h, null);
ImageIO.write(output, defaultSuffix, new File(TurbineServlet.getRealPath(thumbRoot + fileName+"."+defaultSuffix)));
BufferedImage output2 = new BufferedImage(maxResizeDimension, input.getHeight()*maxResizeDimension/input.getWidth(), BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2 = output2.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(input,0,0,maxResizeDimension, input.getHeight()*maxResizeDimension/input.getWidth(), null);
ImageIO.write(output2, defaultSuffix, new File(TurbineServlet.getRealPath(resizeRoot + fileName+"."+defaultSuffix)));
}
uploaded = true;
return uploaded;
}
網(wǎng)站標(biāo)題:java調(diào)準(zhǔn)圖片代碼,java調(diào)整圖片大小
URL地址:http://chinadenli.net/article16/dsgdjdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、Google、搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航、用戶體驗(yàn)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)