[要分析某个网页中的代码构成,需要某个结点下的内容。用此原始方法可以得到整个网页的源码。其实更简单的方法是使用 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如何把图片处理到指定大小...相关推荐

  1. 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...

    [其它]实训任务工单4-1(泛型类.泛型方法的应用) 实训任务工单4-1(泛型类.泛型方法的应用).docx [简答题]教学工单5-1Java序列化机制的使用 [填空题]The name of my ...

  2. 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)

    转自:http://blog.csdn.net/5iasp/article/details/8669644 模拟表单html如下: java代码如下: [java] view plain copy p ...

  3. 判断三角形java代码_java基础编程题之异常处理

    以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...

  4. 线性查找法java代码_Java线性查找和二分查找

    Java线性查找和二分查找. 一 线性查找 定义:在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程. 线性查找又称为顺序查找.如果查找池是某种类型的一个表,比如一个数组,简 ...

  5. 象棋联机java代码_java实现简单网络象棋游戏

    本文实例为大家分享了java实现网络象棋游戏的具体代码,供大家参考,具体内容如下 游戏规则: 1.将/帅:不能出田字格,不能走斜线,只能前进后退向左向右,每次只走一格: 2.士/仕:不能出田字格,只能 ...

  6. 随机数生成java代码_Java Bullshifier –生成大量随机代码库

    随机数生成java代码 生成大量随机Java应用程序的命令行工具 您一直在等待的命令行工具. 或不. 毕竟,这是很深奥的. 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序. ...

  7. java 编写代码_Java 7:如何编写非常快速的Java代码

    java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...

  8. java代码_Java 代码实现排序算法

       阅读本文约需要8分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot+Gradle+ MyBa ...

  9. 票据ticket实现方式java代码_Java代码实践12306售票算法(二)

    周五闲来无事,基于上一篇关于浅析12306售票算法(java版)理论,进行了java编码实践供各位读者参考(以下为相关代码的简单描述) 1.订票工具类 1.1初始化一列车厢的票据信息 /** * 生成 ...

最新文章

  1. mysql isreg_`Innodb` MySQL中如何优雅的删除大表跑路
  2. LeetCode:14. Longest Common Prefix
  3. B树、B-树、B+树、B*树(转)
  4. 【MD5】加密/解密大小写问题
  5. 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
  6. 什么时候我们应谈及性能?
  7. SQL 性能不佳的几个原因
  8. leetcode1254. 统计封闭岛屿的数目(dfs)
  9. Python os模块 -Python系统编程中的操作模块
  10. 华尔街为何热捧优酷网?
  11. Python实现批量导入Markdown文件到WordPress(博客搬家工具,代码已开源)
  12. android 骨骼动画教程,使用DragonBones开发FLASH骨骼动画入门教程
  13. linux中package什么文件夹,PACKAGE 文件扩展名: 它是什么以及如何打开它?
  14. 怎么在线制作手机海报图片?
  15. 一份Yann LeCun等16个顶级数据科学家给新人的建议
  16. Word多级标题设置,一级标题是汉字数字,其他级别是阿拉伯数字
  17. 光线微弯传感器matlab仿真,基于输出光斑旋转的光纤微弯位移传感器
  18. 1.产品/数据产品设计
  19. FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式
  20. 【蓝桥杯每日一练:跳蛙】

热门文章

  1. LPC1768 IAP(一)
  2. 图像卷积及其Python实现
  3. 隐语义模型(LFM)-----------电影推荐算法
  4. netty与socket对比_java原生各种IO和Netty框架的对比
  5. 家里安装了新的宽带,大部分电视和电影不能观看需要再次购买VIP,你怎么看
  6. 魄罗盒子一直显示连接服务器失败,英雄联盟安装错误代码7001004怎么办 | 手游网游页游攻略大全...
  7. 学习笔记-三维超声相关知识
  8. xbox解锁服务器和语言,微软终于还是没忍住!国行Xbox One实现解锁了
  9. HP服务器换硬盘流程,HP服务器SSD硬盘更换操作指南.pptx
  10. python求解优化问题_科学计算:最优化问题-2(Python)