使用Java等比例缩放图像

简介: 本文为原创,如需转载,请注明作者和出处,谢谢!     缩放图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。

本文为原创,如需转载,请注明作者和出处,谢谢!

    缩放图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和缩放后的目标图像应用分别使用InputStream和OutputStream来表示,代码如下:
     public   static   void  scaleImage(InputStream imgInputStream,
            OutputStream imgOutputStream, 
int  scale)
    {
        
try
        {

            Image src 
=  javax.imageio.ImageIO.read(imgInputStream);
            
int  width  =  ( int ) (src.getWidth( null *  scale  /   100.0 );
            
int  height  =  ( int ) (src.getHeight( null *  scale  /   100.0 );
            BufferedImage bufferedImage 
=   new  BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);

             bufferedImage.getGraphics().drawImage(
                    src.getScaledInstance(width, height, Image.SCALE_SMOOTH),
                    
0 0 null );
            JPEGImageEncoder encoder 
=  JPEGCodec
                    .createJPEGEncoder(imgOutputStream);
            encoder.encode( bufferedImage);

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

    其中scale参数表示缩放比例,1至100,当然,也可以大于100,那就是放大图像了。但要注意,放得太大会失真的。
    当然,也可以重构scaleImage方法,使其可以接收图像文件名,代码如下:

     public   static   void  scaleImage(String imgSrc, String imgDist,  int  scale)
    {
        
try
        {
            File file 
=   new  File(imgSrc);
            
if  ( ! file.exists())
            {
                
return ;
            }
            InputStream is 
=   new  FileInputStream(file);
            OutputStream os 
=   new  FileOutputStream(imgDist);
            scaleImage(is, os, scale);
            is.close();
            os.close();
        }
        
catch  (Exception e)
        {

        }
    }

    下面的代码按15%缩放
scaleImage( " E://pictures//test.jpg " " e://test1.jpg " 15 );



  新浪微博手机客户端(Android/Ophone版) 发布

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

目录
相关文章
|
5月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
37 1
|
8月前
|
数据采集 安全 Java
Java Selenium WebDriver:代理设置与图像捕获
Java Selenium WebDriver:代理设置与图像捕获
|
10月前
|
数据采集 机器学习/深度学习 Java
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
本文介绍了如何使用Java和Apache HttpComponents库从Facebook获取图像数据。通过设置爬虫代理IP以避免限制,利用HttpClient发送请求,解析HTML找到图像链接,然后下载并保存图片。提供的Java代码示例展示了实现过程,包括创建代理配置、线程池,以及下载图片的逻辑。注意,实际应用需根据Facebook页面结构进行调整。
137 6
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
|
9月前
|
Java 计算机视觉
图像处理之图像纹理添加效果(利用JAVA 2D纹理画笔)
图像处理之图像纹理添加效果(利用JAVA 2D纹理画笔)
70 8
|
10月前
|
文字识别 Java Maven
java调用tess4j识别图像中的文字
java调用tess4j识别图像中的文字
437 3
|
10月前
|
算法 Python Java
Java每日一练(20230414) Pow(x, n) 、旋转图像、买卖股票的最佳时机 IV
Java每日一练(20230414) Pow(x, n) 、旋转图像、买卖股票的最佳时机 IV
50 0
Java每日一练(20230414) Pow(x, n) 、旋转图像、买卖股票的最佳时机 IV
|
存储 算法 Java
GIF图像动态生成-JAVA后台生成
本文简要讲述了GIF图像知识,并且以JAVA技术为例,介绍了后台生成GIF的技术,并提供较详细的代码示例,希望对您有帮助。最后怀念因新冠感染去世的GIF的发明者,斯蒂芬•威尔海特。
457 0
GIF图像动态生成-JAVA后台生成
|
10月前
|
移动开发 搜索推荐 前端开发
【Java】医院智能导诊系统源码:解决患者盲目就诊问题、降低患者挂错号比例
【Java】医院智能导诊系统源码:解决患者盲目就诊问题、降低患者挂错号比例
88 0
|
机器学习/深度学习 Java
48. 旋转图像 --力扣 --JAVA
​ 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 ​
62 0
|
机器学习/深度学习 算法 Java
Java使用OpenCV进行图像操作
OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,包括图像读取、显示、滤波、特征检测、目标跟踪等功能。
4646 2

热门文章

最新文章