裁剪java上传图片,对图片进行等比例缩放,及局部裁剪的工具类代码

上传工具  时间:2021-02-23  阅读:()

Java上传图片对图片进行等比例缩放及局部裁剪的工具类代码import c om.sun.image.c odec.jpeg.JPEGCodec;import c om.sun.image.c odec.jpeg.JPEGEnc odeParam;import c om.sun.image.c odec.jpeg.JPEGImageEnc oder;public class FileUploadUtils {

*裁剪图片

*@param input

*@param basepath

*@param uid

*@param x

*@param y

*@param w idth

*@param height

*@r eturn绝对路径

*@throws IOExc eptionpublic static String cutImg(String input,String basepath,int x,int y,int width,int height) throwsIOException{

S tring path2=bas epath+/+Cons tantUtils.US ERFAC ET EMPPAT H;

String postfix=getPostfix(input);

String dst=path2+/+UUID.randomUUID().toString()+.+postfix;createDir(path2);img Cut(b as ep ath+input,ds t,p o stfix,x,y,w idth,height);return dst;

*裁剪图片

*@param input

*@param src

*@param x

*@param y

*@param w idth

*@param height

*@throws IOExc eptionpublic static void imgCut(String input,String dst,String type,int x,int y,int width,int height)throws IOExc eption

BufferedImage fromimg=ImageIO.read(new File(input));

ImageFilter cropFilter=new CropImageFilter(x,y,width,height);

Image img = Toolkit.getDefaultToolkit().createImage(newFilteredImageSourc e(fromimg.getSourc e(),cropFilter));

BufferedImage tag=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

Graphic s g=tag.getGraphic s();g.draw Imag e(img,0,0,null); //绘制小图g.dis p o s e();

//输出为文件

//dir=d:\\temp\\c ut_image_+i+_+j+.jp g

File f=new File(dst);

I mag eI O.write(tag,typ e, f);public static String uploadImg(File src,String basepath,String filename) throws Exception{

String daypath = DateTools.getYear() + + DateTools.getMonth() + +D ateTo o ls.getMonthWeek();

String temppath = ConstantUtils.BASEUPLOADPATH+ /+Cons tantUt ils.ORI GIN ALIMGPAT H+/+daypath;

String thumbnailpath = ConstantUtils.BASEUPLOADPATH+ /+Cons tantUt ils.T HUM BN AILI MGPAT H+/+dayp ath;

String postfix=getPostfix(filename);

String uuid=UUID.randomUUID().toString();

String dsttempname=uuid+.+postfix;createDir(bas epath+/+temppath);cr eateD ir (b as ep ath+/+thumbnailp ath);

String dstallpath=bas epath+/+temppath+/+dsttempname;

String ds tthumbnailpath=bas epath+/+thumbnailpath+/+ds ttempnam e;copy(src,new File(dstallpath));

//对上传的文件进行等比例裁剪。 按照前段要展现的height w idth

T humb n ail(d s t al lp ath,d s tthumb n ailp ath,350,300,100);

//返回裁剪后的路径r eturn thumbnailp ath+/+ds ttempnam e;

*上传文件

*@param src

*@param dst

*@throws Exc eptionpublic static void copy(File src,File dst) throws Exception{

try{

InputStream in=null;

OutputStream out=null;try{in=new BufferedInputStream(new FileInputStream(src),ConstantUtils.BUFF ER_SIZE);out=new BufferedOutputStream(new FileOutputStream(dst),ConstantUtils.BUFFER_SIZE);byte[]buffer=new byte[ConstantUtils.BUFFER_SIZE];while(in.read(buffer)0) {out.write(buffer);

}final ly{if(nu ll !=in) {in.close();if(nu ll !=o ut) {out.c lo s e();

} catch(Exc eption e) {e.printStackTrac e();throw e;

*得到文件后缀jpg

*@param fileName

*@r eturnpublic static String getPostfix(String fileName){if(fileName.equa ls( ))

r eturnint pos=fileName.lastIndexOf( .if(pos 0) {return fileName.substring(fileName.length() - 3).toLow erCas e();} els e {return fileName.substring(pos+1).toLow erCas e();

*创建目录

*@param filePathpublic static void createDir(String filePath) {

File myFile=new File(filePath);if(!myFile.ex ists()) {if(!myF ile.mkd irs())

Sys tem.out.println(创建目录failels e

System.out.println(创建目录succ es smyF ile=null;

*等比例缩放图片

*@param infile

*@param outfile

*@param w idth

*@param height

*@param quality

*@throws IOExc eption

*@throw s InterruptedExc eptionpublic static void Thumbnail(String infile, String outfile, int width, int height, int quality)throws IOExc eption, InterruptedExc eption{

//save thumbnail imag e to OUTFILE

//System.out.println( infile:+infile);

Buffer edI mag e thumb Imag e=null;

BufferedOutputS tream out=null;

Image image=null;image=Toolkit.getDefaultToo lkit().createImage(infile);

MediaTracker mediaTracker=new MediaTracker(new Container());mediaTrac ker.addImage(image,0);mediaTrac ker.w aitF orID(0);int thumb Width=w idth;int thumbHe ight=height;doub le thumbRatio=(doub le) thumbWidth/ (doub le) thumbHe ight;int image Width=image.get Width(null);int imageHe ight=image.getHe ight(null);double image Rat io=(double) imageWidth/ (double) image Height;if(thumbRatio imageRatio) {thumb He ight=(int) (thumb Width/ im ag eRat io);

} els e {

thumb Width=(int) (thumb He ight * im ag eR atio);thumbImage = new BufferedImage(thumbWidth, thumbHe ight,BufferedImage.TYPE_INT_RGB);

Graphic s2D graphic s2D=thumbImage.createGraphic s();graphic s 2D.s etRenderingHint(Rend ering Hints.KEY_INTERPOLATION,Rendering Hints.VALUE_INTERP O LATION_BILINEAR);graphic s 2 D.draw I mag e(imag e,0,0, thumbWidth, thumbHe ight,null);out=new BufferedOutputStream(new FileOutputStream(outfile));

JPEGImageEnc oder enc oder=JPEGCodec.createJPEGEnc oder(out);

JPEGEnc odeParam param=enc oder.getDefaultJPEGEnc odeParam(thumbImage);quality=Math.max(0,Math.min(qual ity, 100));param.s etQuality((float)quality/ 100.0 f,fals e);enc oder.s etJPEGEnc odeParam(param);enc oder.enc ode(thumbImage);out.c lo s e();thumb I m ag e=null;o ut=nu ll;imag e=null;

}

Sharktech:美国/荷兰独立服务器,10Gbps端口/不限流量/免费DDoS防护60G,319美元/月起

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。此文只整理他们家10Gbps专用服务器,此外该系列所有服务器都受到高达 60Gbps(可升级到 100Gbps)的保护。...

ManSora:英国CN2 VPS,1核/1GB内存/10GB SSD/1TB流量/100Mbps/KVM,$18.2/月

mansora怎么样?mansora是一家国人商家,主要提供沪韩IEPL、沪日IEPL、深港IEPL等专线VPS。现在新推出了英国CN2 KVM VPS,线路为AS4809 AS9929,可解锁 Netflix,并有永久8折优惠。英国CN2 VPS,$18.2/月/1GB内存/10GB SSD空间/1TB流量/100Mbps端口/KVM,有需要的可以关注一下。点击进入:mansora官方网站地址m...

BeerVM1GB内存/VDSps端口1GB,350元/月

beervm是一家国人商家,主要提供国内KVM VPS,有河南移动、广州移动等。现在预售湖南长沙联通vds,性价比高。湖南长沙vps(长沙vds),1GB内存/7GB SSD空间/10TB流量/1Gbps端口/独立IP/KVM,350元/月,有需要的可以关注一下。Beervm长沙联通vps套餐:长沙联通1G青春版(预售)长沙联通3G标准版(预售)长沙联通3G(预售)vCPU:1vCPU:2vCPU...

上传工具为你推荐
无线路由器限速设置wifi怎么设置限速ghostxp3目前最好的ghost xp3是什么?伪静态静态与伪静态的区别?arm开发板单片机开发板与ARM开发板有什么不同?淘宝店推广给淘宝店铺推广有什么好处?安卓应用平台app应用平台有哪些 应用平台哪些qq空间装扮QQ空间装扮畅想中国畅想中国发展前景免费免费建站可以不用钱免费做一个网站吗什么是云平台云平台和云计算的区别是什么?
虚拟主机申请 网站空间免备案 花生壳动态域名 荷兰vps 中文域名交易中心 香港机房托管 174.127.195.202 网站保姆 lighttpd html空间 铁通流量查询 秒杀汇 hktv 免费dns解析 支付宝扫码领红包 万网空间购买 shopex主机 空间租赁 网通服务器 西安服务器托管 更多