`
ttitfly
  • 浏览: 622133 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

图片处理

    博客分类:
  • java
阅读更多

根据帖子:http://www.iteye.com/topic/40971 整理

图片缩小处理

第一种方式缩小后质量很差

第二,三种方式缩小后很好

对图片的缩放一定要用 Image下的 getScaledInstance

Graphics下的 还有 AffineTransform下的 缩放都是针对"图形"而不是"图像"的

图形就是用java类画的线条等简单几何图形

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class Pic {
 
 public static void reduceImg(String imgsrc, String imgdist, int widthdist,  
            int heightdist) {  
        try {  
            File srcfile = new File(imgsrc);  
            if (!srcfile.exists()) {  
                return;  
            }  
            Image src = javax.imageio.ImageIO.read(srcfile);  
            int width = src.getWidth(null);  
            int height = src.getHeight(null);  
 
            if (width == widthdist && height == heightdist) {  
                FileUtils.copyFile(new File(imgsrc), new File(imgdist));  
                return;  
            }  
              
 
            double ws = (double) widthdist / (double) width;  
              
            double hs = (double) heightdist / (double) height;  
              
            BufferedImage tag=null;  
 
            tag = new BufferedImage((int) widthdist, (int) heightdist,  
                    BufferedImage.TYPE_INT_RGB);  
              
            Graphics2D g2d=(Graphics2D)tag.getGraphics();   

第一种方式
              
//            AffineTransform at=AffineTransform.getScaleInstance(ws,hs);  
//            RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);      
//            g2d.transform(at);  
//            qualityHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);    
//            qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);     
//
//            qualityHints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);  
//               
//            g2d.setRenderingHints(qualityHints);    
 // g2d.drawImage(src, 0, 0,  null); 

第2种方式
            g2d.drawImage(src.getScaledInstance(widthdist, heightdist,  Image.SCALE_SMOOTH), 0, 0,  null);   
 

第3种方式
//          /         tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist,  Image.SCALE_AREA_AVERAGING), 0, 0,  null);
            FileOutputStream out = new FileOutputStream(imgdist);  
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
            encoder.encode(tag);  
            out.close();  
 
        } catch (IOException ex) {  
            ex.printStackTrace();  
        }  
    }  
 
 
 public static void main(String[] args)
 {
  Pic.reduceImg("c:/pic/1.gif","c:/pic/11.gif",48,48);
 }


}

分享到:
评论

相关推荐

    VC图片处理 VC图片处理

    在VC++(Visual C++)开发环境中,图片处理是一项常见的任务,它涉及到图像的加载、显示、编辑和保存等操作。VC++提供了多种方法来处理图片,这些方法主要基于Windows API函数、MFC(Microsoft Foundation Classes)...

    《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf

    《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片...

    Java图片处理类库SimpleImage.zip

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...

    android图片处理集合demo

    在Android开发中,图片处理是一项常见的任务,涉及到用户体验和应用性能。"android图片处理集合demo"是一个示例项目,集中展示了多种图片处理技术。虽然代码可能没有经过精心整理,但仍然能为开发者提供宝贵的参考。...

    图片处理小工具

    在IT领域,图片处理是一项常见的任务,而"图片处理小工具"正是一款专注于解决这些问题的软件。这款工具专为用户提供了便捷的批量处理功能,能够有效地优化和调整大量的图像文件,提升工作效率。以下是对该软件及其...

    淘宝图片处理软件

    为淘客专门做的,为你带来皇冠、、、美图淘淘是一款专为网店卖家设计的批量图片处理软件,包括图片处理、添加装饰素材、边框、文字等图片处理的常用功能。美图淘淘可同时对多张图片进行处理,将原先需要重复劳动的...

    一个PHP多功能图片处理类库

    1. **图片缩放**:缩放是图片处理中最基础的功能,允许开发者调整图片的大小以适应不同的显示环境。21PHP图片处理类可能包含了自定义比例或固定尺寸的缩放方法,同时考虑到保持图片的原始宽高比,避免拉伸变形。 2....

    迷你批量图片处理专家

    "迷你批量图片处理专家"是一款专门针对图片进行批量处理的工具,主要功能包括转换图片格式、调整图片尺寸、添加水印等。这款软件适合需要处理大量图片的用户,如摄影师、设计师或者个人用户,能够极大地提高工作效率...

    基于JQUERY的图片处理类

    在给定的标题“基于JQUERY的图片处理类”和描述中,我们可以推断这是一个利用jQuery进行图片处理的工具或插件,主要功能包括图片上传和裁切。结合标签“php JQUERY 图片处理”,我们可以进一步理解,这个工具可能还...

    asp.net图片处理.rar

    ASP.NET 图片处理技术是Web开发中的一个重要环节,它涵盖了从上传、裁剪、缩放、旋转到水印添加等一系列图像操作。在ASP.NET框架下,开发者可以利用各种工具和库来实现这些功能,为网站提供丰富的图像服务。本文将...

    图片处理程序(Qt)

    【图片处理程序(Qt)】是一个基于Qt框架开发的简易应用程序,主要功能是实现对图像进行翻转、调整大小和改变像素的操作。Qt是一个跨平台的C++图形用户界面库,广泛应用于桌面应用、移动应用以及嵌入式系统中。在这...

    批量图片处理工具-批量裁剪,批量色彩处理,滤镜.7z

    在IT领域,图片处理是一项常见的任务,特别是在设计、摄影或网站开发中。为了提高效率,批量处理工具应运而生,比如"批量图片处理工具-批量裁剪,批量色彩处理,滤镜.7z"这款软件。这款工具专门针对图片进行自动化...

    一个PHP多功能图片处理类库.zip

    在PHP开发中,图片处理是一项常见的任务,包括但不限于图片缩放、添加水印、裁剪、旋转等。这里我们讨论的是一款名为“21PHP...在实际项目中,根据需求选择合适的功能,结合这个类库,可以轻松实现高效的图片处理流程。

    daycaca一款基于canvas图片处理类库它可以帮助你处理图片的压缩裁剪等

    《基于Canvas的图片处理类库Daycaca:深入解析与应用》 Daycaca是一款强大的JavaScript图片处理类库,它充分利用HTML5中的Canvas元素,为开发者提供了便捷的图片压缩和裁剪功能。在Web开发中,尤其是在用户上传图片...

    pb图片处理

    在IT行业中,图片处理是一项常见的任务,特别是在软件开发和网页设计中。PowerBuilder(简称pb)是一款强大的可视化编程工具,尤其适用于开发数据库应用系统。在这个“pb图片处理”的主题中,我们将探讨如何利用...

    PHP图片处理(上传、加水印、缩略图)

    PHP图片处理(上传、加水印、缩略图),对图片的处理

    word插件,图片处理专用

    然而,Word的内置功能可能无法满足所有高级需求,这时,"word插件,图片处理专用"就显得尤为重要。 Word插件是一种能够扩展Word功能的小型软件应用,它们通常由第三方开发者创建,旨在解决特定问题或提供额外的工具...

    Android图片处理源码

    在Android开发中,图片处理是一项常见的任务,涉及到用户界面的美观、用户体验的优化以及资源的高效利用。这个压缩包文件“Android图片处理源码”很可能包含了一些用于Android平台的图片处理库或者示例代码,帮助...

    华为云对象存储服务-图片处理特性指南.pdf

    本指南主要聚焦于华为云OBS的图片处理特性,帮助用户理解和利用这些特性优化图片管理和应用。 1.1 什么是图片处理? 图片处理是指在华为云OBS上对存储的图片进行一系列操作,如缩放、裁剪、旋转、水印添加、格式...

    图片处理(图片放大缩小翻转水印镜像等更能)

    在IT行业中,图片处理是一项常见的任务,特别是在网页设计、图形设计、数据分析以及各种应用程序的开发中。本主题主要关注如何实现图片的放大、缩小、翻转、添加水印以及镜像效果。以下是对这些功能的详细说明: 1....

Global site tag (gtag.js) - Google Analytics