`
xieyan30
  • 浏览: 49147 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

改变图像的宽和高,但不改变长宽比

阅读更多

 /**
  * change image's width and height
  *
  * @param origin
  *            source image's path
  * @param dest
  *            target image's path
  * @param width
  *            expected width
  * @param height
  *            expected height
  * @return true:success || false:failed
  */
 public static boolean resizeImg(String origin, String dest, int width, int height) {
  try {
   BufferedImage img = ImageIO.read(new File(origin));

   // origin width and height
   int imgWidth = img.getWidth();
   int imgHeight = img.getHeight();

   // check width and height
   if (imgWidth > width || imgHeight > height) {
    float widthRate = (float)imgWidth / (float)width;
    float heightRate = (float)imgHeight / (float)height;
    float rate = widthRate > heightRate ? widthRate : heightRate;
    rewriteImg(origin, dest, 0, 0, (int)(imgWidth / rate), (int)(imgHeight / rate), BufferedImage.TYPE_INT_RGB);
   }

   return true;
  } catch (Exception e) {
   return false;
  }
 }

 

 public static boolean rewriteImg(String origin, String dest, int x, int y,
   int width, int height, Integer scaleType) {
  try {
   // img's suffix
   String suffix = origin.substring(origin.lastIndexOf(".") + 1);

   // source image
   Image image = ImageIO.read(new File(origin));
   
   // get target
   BufferedImage tag = new BufferedImage(width, height, scaleType);
   Graphics g = tag.getGraphics();
   g.drawImage(image, x, y, width, height, null);
   g.dispose();
   
   // Graphics to ByteArrayOutputStream
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   ImageIO.write(tag, suffix, bos);
   
   // write file
   FileOutputStream fos = new FileOutputStream(dest);
   fos.write(bos.toByteArray());
   fos.flush();
   fos.close();
   
   return true;
  } catch (Exception e) {
   return false;
  }
 }

分享到:
评论

相关推荐

    行业分类-设备装置-具有随机行存取的成像器的长宽比转换.zip

    长宽比转换就是改变图像的宽度和高度比例,而保持其内容的视觉完整性。这涉及到像素的重采样,可能包括插值、缩减或扩展等操作。为了实现高质量的长宽比转换,需要考虑图像细节的保留、边缘处理以及避免失真等问题。...

    数字图像处理习题集.doc

    给定一个长宽比为4:3的图像,如果它具有1600万个像素,那么可以通过以下方式计算分辨率: \[ \text{分辨率} = \sqrt{\frac{\text{总像素数}}{\text{长宽比}}} = \sqrt{\frac{16000000}{4/3}} = \sqrt{3464100} \...

    VB 图像框的Stretch属性

    例如,在设计一个需要自适应图像大小的网页或桌面应用程序时,可以根据窗口尺寸动态改变图像框的大小,通过设置Stretch属性来实现图像的缩放。 在VB中,你可以通过以下步骤设置图像框的Stretch属性: 1. 首先,在...

    改变图片尺寸工具

    此外,它可能还具备保持原图宽高比的选项,以防止图片变形。在处理过程中,工具可能会提供两种模式:等比例缩放和强制缩放。等比例缩放会保持原始图像的长宽比例,而强制缩放则会改变长宽比例,可能导致图像失真。 ...

    图像平移缩放旋转计算

    在图像处理领域,平移、缩放和旋转是基本的操作,它们经常被用来改变图像的位置、大小和方向。本文将深入探讨这些概念以及如何通过编程实现这些操作。 首先,我们来理解平移(Translation)。平移是将图像在二维...

    图像类_labview图像_labview_图像按比例缩放_

    在数字图像处理中,缩放是指改变图像的尺寸,通常以保持图像的长宽比,可以放大或缩小图像。图像缩放有两种基本类型:线性插值和非线性插值。在LabVIEW中,我们主要关注线性插值,因为它是最常见且计算效率较高的...

    matlab开发-图像处理使用双线性插值缩放动画

    这样的缩放不会改变图像的比例,保持其原有的长宽比,避免图像变形。在MATLAB中,只需调整`imresize`函数的第二个参数即可实现。 四、动画制作 `bilinear_zoom.m`脚本可能包含了创建缩放动画的代码。在MATLAB中,...

    生成缩略图片或按照比例改变图片的大小和画质

    当我们按比例调整图片大小时,要保持原有的长宽比,防止图像变形。这可以通过计算两个维度的比例因子,然后分别应用于宽度和高度来实现。如果需要保持文件大小不变,同时改变画质,可以调整图像的位深度或使用不同的...

    Photoshop图像处理模拟试题3.doc

    8. **图像尺寸调整**:图像2的改变是由于图像大小的调整,改变了图像的尺寸,而不是画布大小、分辨率或像素长宽比。 9. **扭曲效果**:图像2的选区扭曲可能是切变扭曲的效果,它允许沿着特定路径扭曲图像。 10. **...

    Visual C++数字图像处理开发入门与编程实践2-8章源代码

    2.RGB颜色空间和HSV颜色空间的转换 当改变RGB值,会得到相应的HSV值,并进行显示,反之亦然。 3.取色功能 取色功能包含“面板取色”和“屏幕取色”。面板取色就是用户可以在颜色面板中单击鼠标左键,...

    精通C#数字图像处理算法典型实例04

    图像缩放是改变图像大小的过程,分为等比例缩放和非等比例缩放。等比例缩放保持图像长宽比不变,而非等比例缩放可能导致图像变形。C#中可以使用插值算法,如最近邻插值或双线性插值,来计算新尺寸下每个像素的值。...

    数字图像处理软件Photoshop的使用

    2. **调整大小**:在“图像”>“图像大小”对话框中,可以直接输入像素值改变图像大小,如将图像调整为600×400像素。 3. **转换文件格式**:保存图像时,选择“文件”>“存储为”,在“保存为类型”下拉菜单中选择...

    计算机图像处理题(“概率”文档)共15张.pptx

    而不按长宽比的缩小可能会影响图像的纵横比,但有时在特定应用场景中是必要的。 总的来说,这个计算机图像处理题目涵盖了图像处理的基础知识,包括直方图均衡化和两种编码技术,以及图像缩小的方法,这些都是图像...

    图片大小编辑器 图片大小改变

    如果必须改变长宽比,可以考虑裁剪图像来适应新的尺寸。 4. **压缩算法**:图片编辑器在缩小图片尺寸的同时,可能会使用压缩算法来减少文件大小。JPEG使用有损压缩,会丢失部分数据;PNG使用无损压缩,但压缩效果...

    Photoshop图像处理知识点整理.pdf

    1. **调整图像大小**:通过“图像”>“图像大小”菜单,可以整体改变图像的尺寸。如果保留原始比例,可以保持图像的长宽比不变。 2. **对象大小变化**:选择图层和对象,使用“编辑”>“自由变换”进行精确调整。 3....

    IOS应用源码之调整图片大小长宽的组件 .rar

    `UIImage`是苹果提供的一个用于存储和操作图像的类,它包含了加载、显示和处理图片的各种方法。例如,我们可以使用`init(named:)`初始化一个`UIImage`对象,通过指定图片的名字来加载图片资源。 调整图片大小通常...

    20秋电子科技大学《平面图像软件设计与应用》在线作业2答卷.docx

    2. 自定义设置:在Photoshop CS中,用户可以自定义颜色工作空间、色彩管理方案和快捷键,但像素的长宽比例是固定的,不能自定义。 3. Web图像格式:JPEG适合于丰富的色彩图像,如照片;JPEG和GIF都是压缩文件格式,...

    基于机器人焊枪倾角变化的熔池图像分析.pdf

    这些步骤可以得到边缘轮廓平滑的熔池图像,从而计算出熔池面积和长宽比等特征参数。 4. 熔池图像特征分析: 熔池图像具有不规则半椭圆形的特点,其形状受到焊枪倾角变化的影响。文中通过试验,使用不同倾角的熔池...

    PhotoshopCS图像处理培训教程-第章7完美版资料.ppt

    - 使用选框工具时,工具属性栏提供了各种选项,如添加/合并/减去/交集操作按钮,羽化值设定(用于柔化选区边缘),以及样式选择(正常、固定长宽比、固定大小)。 2. **编辑图像选区**: - 编辑选区包括移动、...

Global site tag (gtag.js) - Google Analytics