`
7090
  • 浏览: 274008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2se图片的一些操作

    博客分类:
  • J2se
阅读更多

package ii7090;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class PngTools {
    
    /**
     * 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)
     */
    public static void convert(String source, String result) {
        try {
            File f = new File(source);
            f.canRead();
            f.canWrite();
            BufferedImage src = ImageIO.read(f);
            ImageIO.write(src, "JPG", new File(result));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 彩色转为黑白
     *
     * @param source
     * @param result
     */
    public static void gray(String source, String result) {
        try {
            BufferedImage src = ImageIO.read(new File(source));
            ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
            ColorConvertOp op = new ColorConvertOp(cs, null);
            src = op.filter(src, null);
            ImageIO.write(src, "JPEG", new File(result));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 实现图像的切割
     *
     * @param srcImageFile
     * @param standardWidth
     * @param standardHeight
     */
    public static void cut(String srcImageFile, int standardWidth,
            int standardHeight) {
        try {
            Image img;
            ImageFilter cropFilter;
            System.out.println("cut image");
            // 读取源图像
            BufferedImage bi = ImageIO.read(new File(srcImageFile));
            int srcWidth = bi.getWidth(); // 源图宽度
            int srcHeight = bi.getHeight(); // 源图高度

            Image image = bi.getScaledInstance(srcWidth, srcHeight,
                    Image.SCALE_DEFAULT);
            int dx = 0;// 裁剪图像的x点位置
            int dy = 0;// 裁剪图像的y点位置

            cropFilter = new CropImageFilter(dx, dy, standardWidth,
                    standardHeight);//提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。
            img = Toolkit.getDefaultToolkit().createImage(
                    new FilteredImageSource(image.getSource(), cropFilter));//使用FilteredImageSource为原图像的新过滤版本产生图像数据
            BufferedImage tag = new BufferedImage(standardWidth,
                    standardHeight, BufferedImage.TYPE_INT_RGB); //创建width,height大小的一个图像缓冲区
            Graphics g = tag.getGraphics();
            g.drawImage(img, 0, 0, null);
            g.dispose();
            ImageIO.write(tag, "JPEG", new File(srcImageFile + "pp.jpg"));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 实现图像的缩放
     *
     * @param srcImageFile
     * @param standardWidth
     * @param standardHeight
     */
    public static void scale(String srcImageFile, int standardWidth,
            int standardHeight) {
        try {
            System.out.println("scale image");
            BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件

            Image image = src.getScaledInstance(standardWidth, standardHeight,
                    Image.SCALE_DEFAULT); //根据width,height创建此图像的缩放版本,按指定的 width 和 height 呈现图像
            BufferedImage tag = new BufferedImage(standardWidth,
                    standardHeight, BufferedImage.TYPE_INT_RGB); //创建width,height大小的一个图像缓冲区
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); //将图像会知道缓冲区上
            g.dispose();
            ImageIO.write(tag, "JPG", new File(srcImageFile + "name.JPG"));// 输出到文件流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        cut("d:/2012.jpg", 2000, 2000);
        //        scale("D:/2012.jpg", 200, 100);
    }
}


参考:http://blog.csdn.net/boy_wh520/archive/2007/04/12/1561519.aspx

          http://twobrushes.blog.163.com/blog/static/7891240420082824148850/

 

 

 

分享到:
评论

相关推荐

    JAVA基础知识点,J2SE部分内容

    字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串(比如对图片文件的操作就只能用字节流) 3-5.一个字符可以是1个字节,也可以是2个或多个字节 一个字节就是8个位,也就是对同一数据源...

    画图_j2se项目源码及介绍

    函数说明 菜单的事件监听,相应不同的菜单操作。 函数原型 findAccelerKey(java.lang.String text) 函数说明 根据指定的文本得到快捷键。 函数原型 canvasInit() 函数说明 画布的初始化函数。 函数原型 new...

    java 课程设计 JPEG图片操作

    使用J2SE 对jpeg格式的图片进行操控,并实现一定的绘图功能

    Derby数据库的使用指南--包括存图片到数据库和读取数据库中的图片操作

    9、运行ShowQueryDB类,你会看到对derby数据库的新增修改操作动作,其中有写入图片到数据库的语句,以及从数据库读到图片并显示出来窗体中的语句。 阅读对象:熟悉Swing编程、JDBC编程的学员。 感觉:因为derby是纯...

    Spire.Pdf_2.0.3.zip

    该类库的主要功能在于帮助开发人员在 Java 应用程序(J2SE和J2EE)中生成 PDF 文档和操作现有 PDF 文档,并且运行环境无需安装 Adobe Acrobat。 Spire.PDF for Java 支持的功能非常丰富,例如 PDF 文档安全性设置,...

    免费版 Java Barcode组件_Free Spire.Barcode for Java 1.3

    Free Spire.Barcode for JAVA 是 Spire.Barcode for JAVA 的免费产品。Free Spire.Barcode for JAVA 是一款基于 ...开发人员能够方便快捷的将 Free Spire.Barcode for JAVA 整合到 JAVA 平台 (J2SE and J2EE) 程序中。

    Multimedia-Note

    开发环境和工具本项目在与Android开发工具集成的Eclipse IDE上使用J2SE和android SDK 2.1开发,运行在Win7操作系统上。 并在安卓手机HTC G11上进行了测试。应用程序设计、分析和实现应用设计如图1所示,我们的应用...

    java8stream源码-JPP:JPP

    图片过大可能加载不出,请自行至项目相应的文件查看 最新更新:修正HashMap1.8中变树阈值部分泊松分布的概率分布图 网络通信 操作系统层面 Redis 最新更新:Redis分布式锁细节补充 Spring Bean 声明周期 & 循环依赖 ...

    java jdk实列宝典 光盘源代码

    16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore ...

    一个用JAVA做的简单的画图程序

    可以定义点,系统自动在点与点... 可以通过鼠标的拖动操作调整直线的曲率(度),从而实现弧线的功能。 可以在任意位置放置补充说明的文字,并且可以调整文字的大小。 可以保存成通用的网页图片JPG格式。

    Java JDK实例宝典

    3 缩放图片 10. 4 2D图形 10. 5 3D图形.. 10. 6 一个时钟程序 第11章 Java多媒体 11. 1 滚动的消息 11. 2 三维弹球 11. 3 贪吃蛇游戏 11. 4 Java声音处理 11. 5 媒体播放器 ...

    JAVA面试题最全集

    介绍J2EE、J2SE、J2SE的区别。 2.J2EE是一种技术还是一种平台,他提供了那些技术。 3.什么是Application Server,它有什么功能和优点。 4.简单介绍连接池的优点和原理。 5.Web.xml的作用 四、其他 1.Web安全性...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

Global site tag (gtag.js) - Google Analytics