Java放缩
『壹』 java图片缩放
根据你的鼠标移动事件,判断你第一次点击的点和最后一次的点,就可以算出这个句型区域的长和宽了,
下面代码自己看
package com.itheima.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* 制作图片缩略图
*
* @author seawind
*
*/
public class PicUtils {
private String srcFile;
private String destFile;
private int width;
private int height;
private Image img;
/**
* 构造函数
*
* @param fileName
* String
* @throws IOException
*/
public PicUtils(String fileName) throws IOException {
File _file = new File(fileName); // 读入文件
this.srcFile = fileName;
// 查找最后一个.
int index = this.srcFile.lastIndexOf(".");
String ext = this.srcFile.substring(index);
this.destFile = this.srcFile.substring(0, index) + "_s" + ext;
img = javax.imageio.ImageIO.read(_file); // 构造Image对象
width = img.getWidth(null); // 得到源图宽
height = img.getHeight(null); // 得到源图长
}
/**
* 强制压缩/放大图片到固定的大小
*
* @param w
* int 新宽度
* @param h
* int 新高度
* @throws IOException
*/
public void resize(int w, int h) throws IOException {
BufferedImage _image = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
_image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图
FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(_image); // 近JPEG编码
out.close();
}
/**
* 按照固定的比例缩放图片
*
* @param t
* double 比例
* @throws IOException
*/
public void resize(double t) throws IOException {
int w = (int) (width * t);
int h = (int) (height * t);
resize(w, h);
}
/**
* 以宽度为基准,等比例放缩图片
*
* @param w
* int 新宽度
* @throws IOException
*/
public void resizeByWidth(int w) throws IOException {
int h = (int) (height * w / width);
resize(w, h);
}
/**
* 以高度为基准,等比例缩放图片
*
* @param h
* int 新高度
* @throws IOException
*/
public void resizeByHeight(int h) throws IOException {
int w = (int) (width * h / height);
resize(w, h);
}
/**
* 按照最大高度限制,生成最大的等比例缩略图
*
* @param w
* int 最大宽度
* @param h
* int 最大高度
* @throws IOException
*/
public void resizeFix(int w, int h) throws IOException {
if (width / height > w / h) {
resizeByWidth(w);
} else {
resizeByHeight(h);
}
}
/**
* 设置目标文件名 setDestFile
*
* @param fileName
* String 文件名字符串
*/
public void setDestFile(String fileName) throws Exception {
if (!fileName.endsWith(".jpg")) {
throw new Exception("Dest File Must end with \".jpg\".");
}
destFile = fileName;
}
/**
* 获取目标文件名 getDestFile
*/
public String getDestFile() {
return destFile;
}
/**
* 获取图片原始宽度 getSrcWidth
*/
public int getSrcWidth() {
return width;
}
/**
* 获取图片原始高度 getSrcHeight
*/
public int getSrcHeight() {
return height;
}
}
『贰』 Java 按比例缩小图片应该怎么实现
public Image resizeImg(Image img, int newWidth, int newHeight) {
int imgW = img.getWidth();
int imgH = img.getHeight();
int[] srcPixels = new int[imgW * imgH];
int[] destPixels = new int[newWidth * newHeight];
img.getRGB(srcPixels, 0, imgW, 0, 0, imgW, imgH);
int srcX;
int srcY;
for (int y = 0; y < newHeight; ++y) {
for (int x = 0; x < newWidth; ++x) {
srcX = (x * imgW) / newWidth;
srcY = (y * imgH) / newHeight;
destPixels[x + y * newWidth] = srcPixels[srcX + srcY * imgW];
}
}
return Image.createRGBImage(destPixels, newWidth, newHeight, true);
}
『叁』 如何用Java实现图形的放大和缩小
要用Java实现图形的放大和缩小,可以使用以下代码:
import java.awt.*;import java.awt.event.*;import javax.swing.*;//实现矩形在规定时间间隔里循环放大缩小;
public class Test02 extends JFrame implements Runnable{static int w = 0,h = 0;//w:矩形宽度,h:矩形高度 ;
boolean flag = false;//false:放大,true:缩小public Test02(){this.setSize (500,500);this.setVisible (true);this.setTitle (w+","+h);this.setLocationRelativeTo (this);this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);}public void paint(Graphics g){int width = getWidth();
//窗口宽度int height = getWidth();//窗口高度g.setColor (Color.WHITE);//设置画笔颜色g.fillRect (0,0,width,height); //填充窗口int x = (width-w)/2;//x:矩形左上角横坐标int y = (height-h)/2;//y:矩形左上角纵坐标g.setColor (Color.BLUE);//同上...g.drawRect (x,y,w,h);
//画矩形,实心矩形为fillRect(....)g.setColor (Color.RED);//同上...g.drawOval (x,y,w,h); //画椭圆setTitle (w+","+h); //以矩形宽和高来设置窗口标题}public void setSize(){float n = getWidth()/getWidth();if(w==0||h==0)flag = false;
if(w==getWidth()||h==getWidth())flag = true;if(!flag){w+=1;h+=n;}if(flag){w-=1;h-=n;}}public void run(){while(true){try{Thread.sleep (5);//间隔}catch(InterruptedException ie){}setSize();repaint();}}public static void main(String[] args){Test02 t = new Test02();Thread th = new Thread(t);th.start();}}
『肆』 如何用Java实现图形的放大和缩小
放大缩小,
就是改变你画图时,图片的长宽
http://..com/question/361953832.html?oldq=1
这是我回答别人问题时写的代码,你看一下。