我是靠谱客的博主 闪闪绿茶,最近开发中收集的这篇文章主要介绍java图片等比缩小算法,java 图片的放大与缩小--等距采样算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package test;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

/*

* 通过像素的缩放技术,改变图片的大小

* --等距采样法

*/

public class ImageChange {

private String filePath;//需要修改的图片途径

private BufferedImage oldBufferedImage;//修改图片的图片缓冲区

private String newFilePath;//新的图片路径

public ImageChange(String filePath,String newFilePath) throws IOException{

this.filePath=filePath;

this.newFilePath=newFilePath;

oldBufferedImage = ImageIO.read(new File(this.filePath));

}

/**

*

* @param width 改变后图片的宽

* @param heigth 改变后图片的高

* @throws IOException

*/

public void flex(float width,float height) throws IOException{

//1原来宽和高与新的宽高的比例K

/**

-------------------------------------------

******************

******************

******************

******************

******************

把原来的图形像素填充到更大的区域里面去,分到大的空间,每一份的比例

********************************

********************************

********************************

********************************

********************************

********************************

********************************

---------------------------------------------

*/

float kx = oldBufferedImage.getWidth()/width;//新的图片的宽占原来像素的大小

float ky = oldBufferedImage.getHeight()/height;//新的图片的高占原来像素的大小

int startX=0,startY=0,offset=0;//初始定义值,具体含义见上一篇blog

int oldWidth = oldBufferedImage.getWidth();

int scansize= oldWidth;//扫描间距

int oldHeight = oldBufferedImage.getHeight();

int newWidth = (int) (oldWidth/kx);//新图片宽

int newHeight = (int) (oldHeight/ky);//新图片高

//获取旧的像素数组

int[] pix = new int[offset+(int) (oldHeight-startY)*scansize+(oldWidth-startX)];

oldBufferedImage.getRGB(startX, startY, oldWidth, oldHeight, pix, offset, scansize);

//新的像素数组定义

int newStartX=0,newStartY=0,newOffset=0;

int newScansize=newWidth;

System.out.print(newScansize);

int[] newPix = new int[newOffset+(int) (newHeight-newStartY)*newScansize+(newWidth-newStartX)];

for(int x = 0;x

for(int y=0; y

newPix[newOffset+(y-newStartY)*newScansize+(x-newStartX)] = pix[offset+((int)((y-startY)*ky))*scansize+(int)((x-startX)*kx)];

//这里取值的时候记得用变量乘以头先算出来的比例

}

}

BufferedImage imgOut = new BufferedImage(newWidth,newHeight,oldBufferedImage.getType());

imgOut.setRGB(newStartX, newStartY, newWidth, newHeight, newPix, newOffset, newScansize);

ImageIO.write(imgOut, "jpg", new File(newFilePath));

}

}

最后

以上就是闪闪绿茶为你收集整理的java图片等比缩小算法,java 图片的放大与缩小--等距采样算法的全部内容,希望文章能够帮你解决java图片等比缩小算法,java 图片的放大与缩小--等距采样算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部