`
7090
  • 浏览: 278579 次
  • 性别: 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/

 

 

 

分享到:
评论

相关推荐

    J2SE 图片搜索系统(含源码)

    在这个图片搜索系统中,开发者可能利用了J2SE的核心功能,如对象模型、多线程、网络通信以及I/O操作等。 GUI(图形用户界面)是系统与用户交互的主要方式,Swing和AWT是Java提供的两个主要GUI工具包。Swing是建立在...

    基于j2se ftp协议实现 的文件、图片上传程序源代码

    总结来说,基于J2SE和FTP协议的文件、图片上传程序开发涉及到网络编程、文件操作以及可能的UI设计。理解FTP协议的运作机制,合理利用Java提供的网络和I/O类,以及良好的编程实践,是构建此类程序的关键。在实际项目...

    J2SE进销存管理系统

    在设计用户界面时,图片元素常用于增强视觉效果,提供图标指示或美化界面。例如,可使用图标的按钮来表示不同操作,用图表展示销售或库存趋势。这些image文件需要与界面设计紧密结合,形成统一的视觉风格,提升系统...

    j2se打包成EXE工具

    这个启动器可能包含了必要的逻辑来查找和启动Java应用程序,并可能包含了一些基本的错误处理机制。 使用此类工具时,开发者通常需要按照以下步骤操作: 1. **准备JAR文件**:首先,确保你的Java应用程序已经被正确...

    Java j2se QQ 毕业论文

    总的来说,Java J2SE QQ毕业论文会涵盖Java编程基础、GUI设计、网络编程、多线程、文件操作等多个方面,通过实现一个类似QQ的即时通讯软件,学生可以深入理解和掌握这些关键知识点,并且在实践中提升自己的编程技能...

    用J2SE实现的蜘蛛纸牌游戏

    5. **图形渲染**:尽管Swing提供了基本的图形绘制功能,但为了达到更好的视觉效果,开发者可能会使用Graphics2D类进行更精细的定制,比如绘制不同花色和数字的纸牌图片,或者添加动画效果。 6. **错误处理**:良好...

    upload.jar for J2SE 5.0

    在Java Web开发中,文件上传是一个常见的需求,特别是在用户需要提交包含图片、文档等非文本数据的表单时。在J2SE 5.0之前,标准的Java API并没有提供直接的文件上传支持,因此开发者需要依赖第三方库或者自己实现...

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

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

    用J2SE实现原网页浏览器(java)

    在Java世界中,J2SE(Java 2 Platform, Standard Edition)是开发桌面应用程序的基础平台。本项目聚焦于使用J2SE来实现一个简单的网页浏览器,这是一个深入理解Java GUI编程和网络通信的好方法。我们将探讨如何利用...

    j2se 项目 五子棋 代码

    `blackImgURL`和`whiteImgURL`分别对应黑棋和白棋的图片,`currentImgURL`可能是用于表示当前选中位置的图片。 在`Panel`类中,`actionPerformed`方法的实现是事件驱动编程的关键,当用户点击“开始游戏”时,调用`...

    J2se笔记本程序源码

    6. **资源管理**:考虑到程序的可维护性和用户体验,可能会包含资源文件管理,如图片、图标等,这可能涉及到ClassLoader的使用来加载资源。 通过研究这个源码,开发者不仅可以了解Java的基础语法和面向对象设计,还...

    J2SE豪华版坦克大战源码

    3. **事件处理**:在坦克大战中,玩家的操作,如移动、射击,需要通过监听键盘事件来实现。这涉及到Java的事件监听机制,包括ActionListener和KeyListener。 4. **多线程**:游戏通常需要同时处理多个任务,如坦克...

    java,J2SE 坦克大战

    在"TankWar2.9"这个压缩包中,可能包含了游戏的配置文件、资源文件(如图片、音频)等。开发者可能使用Java的File、InputStream/OutputStream等类进行文件的读写,以便加载游戏资源或者保存用户进度。 【游戏循环与...

    使用j2se写的java版90坦克

    8. **文件操作**:例如读取保存的游戏进度,或者记录玩家分数,可能需要使用FileInputStream、FileOutputStream等进行文件读写。 9. **错误处理**:良好的错误处理机制能提高游戏的稳定性和用户体验,如使用try-...

    j2se开发的飞行棋源码

    2. **事件监听**: 游戏中的每一步操作,如掷骰子、移动棋子,都需要响应用户的交互。这需要用到事件监听机制,将用户的行为转化为程序逻辑。 3. **多线程**: 游戏进程通常需要多线程来实现并发处理,比如同时处理多...

    java魔板游戏,一个j2se软件

    此外,为了实现图片的选择和难度级别的设定,开发者可能使用了文件I/O操作来读取和加载用户选择的图片。Java的`java.io`包提供了丰富的类用于文件操作,如`File`类用于文件路径的管理和检查,`BufferedImage`类用于...

    java 课程设计 JPEG图片操作

    在这个项目中,我们将深入探讨如何使用Java 2 Standard Edition (J2SE) API来实现JPEG图片的读取、显示、保存以及一些基本的绘图功能。 首先,我们需要引入Java的`javax.imageio`包,这个包提供了用于读取、写入和...

    J2SE进阶(光盘)

    - **IO/NIO**:学习Java的输入输出系统,包括文件操作、网络通信、缓冲区、字符编码等,以及新的NIO(Non-blocking I/O) API。 - **反射**:了解如何在运行时动态获取类的信息,并能创建对象、调用方法、访问字段。...

    J2SE泡泡堂游戏制作.rar

    - **图片和音频**:加载和使用游戏所需的图像和音效资源,可能需要了解Java的图像和音频处理API。 教程中提供的`J2SE泡泡堂游戏制作.doc`可能是详细步骤和代码示例,而`下载说明.txt`可能包含获取和运行项目所需的...

Global site tag (gtag.js) - Google Analytics