2019独角兽企业重金招聘Python工程师标准>>>

package test;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ChangeImage {

public static BufferedImage makeRoundedCorner(BufferedImage image,
            int cornerRadius) {
        int w = image.getWidth();
        int h = image.getHeight();
        BufferedImage output = new BufferedImage(w, h,
                BufferedImage.TYPE_INT_ARGB);

Graphics2D g2 = output.createGraphics();

// This is what we want, but it only does hard-clipping, i.e. aliasing
        // g2.setClip(new RoundRectangle2D ...)

// so instead fake soft-clipping by first drawing the desired clip shape
        // in fully opaque white with antialiasing enabled...
        g2.setComposite(AlphaComposite.Src);
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setColor(Color.WHITE);
        g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius,
                cornerRadius));

// ... then compositing the image on top,
        // using the white shape from above as alpha source
        g2.setComposite(AlphaComposite.SrcAtop);
        g2.drawImage(image, 0, 0, null);

g2.dispose();

return output;
    }

public static BufferedImage createResizedCopy(Image originalImage, int scaledWidth,
            int scaledHeight, boolean preserveAlpha) {
        int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB
                : BufferedImage.TYPE_INT_ARGB;
        BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight,
                imageType);
        Graphics2D g = scaledBI.createGraphics();
        if (preserveAlpha) {
            g.setComposite(AlphaComposite.Src);
        }
        g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
        g.dispose();
        return scaledBI;
    }

public static void main(String[] args) throws IOException {
        BufferedImage icon = ImageIO.read(new File("/home/june/桌面/mm.jpg"));
        BufferedImage rounded = makeRoundedCorner(icon, 30);
        ImageIO.write(rounded, "png", new File("/home/june/桌面/mm_rounded.png"));
        
        BufferedImage pic = ImageIO.read(new File("/home/june/桌面/zhang.jpg"));
        BufferedImage resized = createResizedCopy(pic, 250, 250*768/1024, true);
        ImageIO.write(resized, "jpg", new File("/home/june/桌面/zhang_small.jpg"));
    }

}

转载于:https://my.oschina.net/u/937886/blog/122529

java 图像处理两例:图像缩放与圆角图片的制作相关推荐

  1. DI Blackfin DSP处理器-BF533的开发详解47:图像处理专题-Resize (图像缩放处理)(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了图像缩放处理,代码运行时, ...

  2. java图像处理,拷贝图像EXIF信息

    在使用java做数字图像处理的时候,有时候需要保留图像的EXIF属性信息,比如相机型号,GPS位置等.处理图像的时候,一般直接通过ImageIO读取图像每个像素上的RGB色彩信息,但是图像的其他属性信 ...

  3. matlab图像处理二,图像缩放、旋转、修剪

    图像的缩放 A = imresize(I, scale). I:原图像 scale:>1,放大:<1,缩小 A:缩放后的图像 I=imread('C:\Users\14372\Deskto ...

  4. 【python图像处理】单张图像裁剪与批量图片裁剪

    一.效果 二.代码 1.单张图片裁剪 # 将单张图片分成5张 import cv2 import numpy as np srcImg = cv2.imread("F:/test.jpg&q ...

  5. 图形图像处理 —— 图像缩放算法

    转自:http://blog.chinaunix.net/space.php?uid=22915173&do=blog&id=2185545 摘要:首先给出一个基本的图像缩放算法,然后 ...

  6. Java图像处理方面的工具库和开发包

    Java图像处理类库Java Image Filters Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色.扭 ...

  7. 图像缩放算法(下篇)

    图像缩放算法(下篇) ================================= 转载别人的,但是这篇文章写得确实太好了,所以想分享出来. 原文地址:http://blog.chinaunix ...

  8. 图像缩放的双线性内插值算法的原理解析

    转自:http://blog.csdn.net/qiqi5521/article/details/2207562 图像的缩放很好理解,就是图像的放大和缩小.传统的绘画工具中,有一种叫做"放大 ...

  9. Android实现圆形圆角图片

    本文主要使用两种方法实现图形圆角图片 自定View加上使用Xfermode实现 Shader实现 自定View加上使用Xfermode实现 /** * 根据原图和变长绘制圆形图片 * * @param ...

最新文章

  1. 美团某程序员哀叹:能力很强,却因为不会“向上管理”而惨遭被裁!怎么办?...
  2. 大学英语计算机开学考试试题,2018年全国大学英语四级考试阅读理解试题:学习计算机...
  3. are exo exo是什么歌 we_从演出酬劳只有一袋米到万人追捧!EXO在七年中究竟经历了什么?...
  4. matlab简单分析信号调制解调
  5. linux 检查文件更新,Linux系统文件系统优化及磁盘检查
  6. PDF文档阅读必备的PDF阅读器
  7. 纪念 C语言之父 丹尼斯·里奇 逝世10周年:他发明了计算机世界的钢筋水泥!...
  8. 汽车毫米波雷达测试与测量解决方案
  9. oracle考试试题及其答案,Oracle期末考试试题及答案-
  10. C语言输入一个三位数将它反向输出,输入一个三位数,将它反向输出,编程
  11. 基于人脸特征点实现疲劳检测
  12. 我看了java_我看java没有那么难(转载)
  13. Qt小游戏CoinFlip翻金币
  14. 高考英语50分学计算机,高三英语50分到100分学习窍门
  15. USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)
  16. “硬解码”与“软解码”的区别
  17. 我以过来人的身份告诉你手工测试人员如何转测试开发?
  18. html5知识点:超文本标记语言编程
  19. (78)--用框架爬取招聘信息
  20. Python爬虫贴吧内容

热门文章

  1. 安装oracle后电脑无法启动,求救,Oracle11g安装成功后,总是无法启动
  2. Servlet 服务器 HTTP 响应
  3. stats | 线性回归(一)——模型表达式和输出结果
  4. oracle进入rman报错,Oracle学习系列之Rman学习(三)
  5. linux 进程崩溃log,linux调试:dmesg 查看程序崩溃原因分析方法之一
  6. JavaScript对数组的常见操作
  7. JavaSE04、什么是类和对象,如何使用?
  8. C - 师--链表的结点插入
  9. imac java7下载地址,如何在苹果电脑上安装JAVA开发工具,经验告诉你该这样
  10. maya为什么不能导出fbx_Maya在操作中最容易出现的几个问题,现在注意还来得及...