压缩图片大小的java代码_java按比例压缩图片的源代码,用java如何把图片处理到指定大小...
[要分析某个网页中的代码构成,需要某个结点下的内容。用此原始方法可以得到整个网页的源码。其实更简单的方法是使用 WebClient 或 HtmlUtil 等开源方式 。public class Ht
用java如何把图片处理到指定大小
前言:
朋友在做图片切割的时候遇到一个问题:如何用java如何把图片处理到指定大小?
切割程序如下:
public void cut(String srcImageFile,FileOutputStream fileout, int w, int h, int x1,
int y1, int sw, int sh) {
// TODO Auto-generated method stub
try {
Image img;
ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));
if (sw >= w && sh >= h) {
Image image = bi.getScaledInstance(sw, sh, Image.SCALE_DEFAULT);
// 剪切起始坐标点
int x = x1;
int y = y1;
int destWidth = w; // 切片宽度
int destHeight = h; // 切片高度[在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析
// 图片比例
double pw = sw;
double ph = sh;
double m = (double) sw / pw;
double n = (double) sh / ph;
System.out.println(m);
int wth = (int) (destWidth * m);
int hth = (int) (destHeight * n);
int xx = (int) (x * m);
int yy = (int) (y * n);
// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(xx, yy, wth, hth);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", fileout);
}
} catch (Exception e) {
e.printStackTrace();
}
}
进入正题:
解决方案参考源码,java按比例压缩图片的源代码如下:
public static void uploadImage(File p_in,File p_out,int height,int width,String ftype) throws FileNotFoundException,IOException
{
// 取得图片处理
// ConvertImageFactory l_factory = ConvertImageFactory.getInstance();
// AbstractProduct l_product = l_factory.createAbstractProduct(p_SourceFile.getContentType());
// boolean l_result = l_product.convertImageSize(p_SourceFile
// .getInputStream(), p_path );
InputStream l_in = new FileInputStream(p_in);
OutputStream l_out = new FileOutputStream(p_out);
chgPic(l_in,l_out,width,height,ftype);
}
//按比例压缩图片
public static boolean chgPic(InputStream in, OutputStream out,int newWidth, int newHeight,String ftype) {
BufferedImage img = null;
FileInputStream newin=null;
File tempfile=null;
try {
if(ftype.compareToIgnoreCase("bmp")==0){
PNGDecodeParam decodeParam = new PNGDecodeParam();
String l_tempfile = Tool.createNewFileName("jpg");
tempfile = new File(l_tempfile);
JPEGEncodeParam encodeParam = new JPEGEncodeParam();
//根据路径打开输出流
FileOutputStream tempout;
tempout = new FileOutputStream(tempfile);
ImageDecoder decoder = ImageCodec.createImageDecoder("BMP",in,decodeParam);
RenderedImage image = decoder.decodeAsRenderedImage();
ImageEncoder encoder = ImageCodec.createImageEncoder("JPEG",tempout,encodeParam);
encoder.encode(image);
tempout.close();
newin = new FileInputStream(tempfile);
img = ImageIO.read(newin);
}else{
img = ImageIO.read(in);
}
int width = img.getWidth(null);
int height = img.getHeight(null);
if (newWidth >= width) {
if (newHeight < height) {
width = (int) (width * newHeight / height);
height = newHeight;
}
} else {
if (newHeight >= height) {
height = (int) (height * newWidth / width);
width = newWidth;
} else {
if (height > width) {
width = (int) (width * newHeight / height);
height = newHeight;
} else {
height = (int) (height * newWidth / width);
width = newWidth;
}
}
}
BufferedImage img2 = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
img2.getGraphics().drawImage(img, 0, 0, width, height, null);
if (ftype.compareToIgnoreCase("jpg") == 0 || ftype.compareToIgnoreCase("jpeg") == 0 ) {
ImageIO.write(img2, "jpg", out);
} else
ImageIO.write(img2, "png", out);
if( ftype.compareToIgnoreCase("bmp") == 0){
ImageIO.write(img2, "jpg", out);
newin.close();
tempfile.delete();
}
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}finally{
try{
in.close();
out.close();
} catch (IOException e) {
}
}
}[面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态。这些图形有助于用户,管理人员,系统分析人员,开发人
压缩图片大小的java代码_java按比例压缩图片的源代码,用java如何把图片处理到指定大小...相关推荐
- 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...
[其它]实训任务工单4-1(泛型类.泛型方法的应用) 实训任务工单4-1(泛型类.泛型方法的应用).docx [简答题]教学工单5-1Java序列化机制的使用 [填空题]The name of my ...
- 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)
转自:http://blog.csdn.net/5iasp/article/details/8669644 模拟表单html如下: java代码如下: [java] view plain copy p ...
- 判断三角形java代码_java基础编程题之异常处理
以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...
- 线性查找法java代码_Java线性查找和二分查找
Java线性查找和二分查找. 一 线性查找 定义:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程. 线性查找又称为顺序查找.如果查找池是某种类型的一个表,比如一个数组,简 ...
- 象棋联机java代码_java实现简单网络象棋游戏
本文实例为大家分享了java实现网络象棋游戏的具体代码,供大家参考,具体内容如下 游戏规则: 1.将/帅:不能出田字格,不能走斜线,只能前进后退向左向右,每次只走一格: 2.士/仕:不能出田字格,只能 ...
- 随机数生成java代码_Java Bullshifier –生成大量随机代码库
随机数生成java代码 生成大量随机Java应用程序的命令行工具 您一直在等待的命令行工具. 或不. 毕竟,这是很深奥的. 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序. ...
- java 编写代码_Java 7:如何编写非常快速的Java代码
java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...
- java代码_Java 代码实现排序算法
阅读本文约需要8分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot+Gradle+ MyBa ...
- 票据ticket实现方式java代码_Java代码实践12306售票算法(二)
周五闲来无事,基于上一篇关于浅析12306售票算法(java版)理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成 ...
最新文章
- mysql isreg_`Innodb` MySQL中如何优雅的删除大表跑路
- LeetCode:14. Longest Common Prefix
- B树、B-树、B+树、B*树(转)
- 【MD5】加密/解密大小写问题
- 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
- 什么时候我们应谈及性能?
- SQL 性能不佳的几个原因
- leetcode1254. 统计封闭岛屿的数目(dfs)
- Python os模块 -Python系统编程中的操作模块
- 华尔街为何热捧优酷网?
- Python实现批量导入Markdown文件到WordPress(博客搬家工具,代码已开源)
- android 骨骼动画教程,使用DragonBones开发FLASH骨骼动画入门教程
- linux中package什么文件夹,PACKAGE 文件扩展名: 它是什么以及如何打开它?
- 怎么在线制作手机海报图片?
- 一份Yann LeCun等16个顶级数据科学家给新人的建议
- Word多级标题设置,一级标题是汉字数字,其他级别是阿拉伯数字
- 光线微弯传感器matlab仿真,基于输出光斑旋转的光纤微弯位移传感器
- 1.产品/数据产品设计
- FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式
- 【蓝桥杯每日一练:跳蛙】
热门文章
- LPC1768 IAP(一)
- 图像卷积及其Python实现
- 隐语义模型(LFM)-----------电影推荐算法
- netty与socket对比_java原生各种IO和Netty框架的对比
- 家里安装了新的宽带,大部分电视和电影不能观看需要再次购买VIP,你怎么看
- 魄罗盒子一直显示连接服务器失败,英雄联盟安装错误代码7001004怎么办 | 手游网游页游攻略大全...
- 学习笔记-三维超声相关知识
- xbox解锁服务器和语言,微软终于还是没忍住!国行Xbox One实现解锁了
- HP服务器换硬盘流程,HP服务器SSD硬盘更换操作指南.pptx
- python求解优化问题_科学计算:最优化问题-2(Python)