开发者社区> 问答> 正文

indesign上的一张图片的处理

indesign一张图片,它有两个改变形式的操作框。第一种是:可以随便改变他的大小(按住Shift等比例缩放的)。一种是可以随意局域显示,但不改变图片的大小的。用java能够实现?

展开
收起
蛮大人123 2016-02-21 10:34:31 2535 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    public class ImageCut {
    
      public static void scale(String srcImageFile, String result, int scale,
        boolean flag) {
       try {
        
        BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
       int width = src.getWidth(); // 得到源图宽
       int height = src.getHeight(); // 得到源图长
       if (flag) { // 放大
        width = width * scale;
         height = height * scale;
        } else { // 缩小
        width = width / scale;
         height = height / scale;
        }
        Image image = src.getScaledInstance(width, height,
          Image.SCALE_DEFAULT); // 返回图像的缩放版本。默认的图像缩放算法
       BufferedImage tag = new BufferedImage(width, height,
          BufferedImage.TYPE_INT_RGB); // 预定义一个图像
       Graphics g = tag.getGraphics(); // 返回Graphics,可用于绘制预定义的图像。
       g.drawImage(image, 0, 0, null); // 用图像的缩放版本去绘制缩放后的图
    
       g.dispose(); // 释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics
            // 对象
       ImageIO.write(tag, "JPEG", new File(result)); // 输出到文件流
      } catch (IOException e) {
        e.printStackTrace();
       }
      }
    
     public static void main(String[] args) {
       ImageCut.scale("D://a.jpg", "D://b.jpg", 4, false);
      }
    
    }

    图形裁剪方法说明:

    CropImageFilter 用于裁剪图像的 ImageFilter 类。此类扩展了基本 ImageFilter 类,可提取现有 Image 中的给定矩形区域,为包含刚提取区域的新图像提供源。也就是它要与 FilteredImageSource 对象结合使用,以生成现有图像的裁剪版本。

    CropImageFilter cropFilter = new CropImageFilter(int x,int y ,int w,int h );//按指定 x、y、w 和 h 参数从源 Image 提取绝对矩形区域

    Image image = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(image.getSource(), cropFilter));

    2019-07-17 18:45:46
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《如何制作一个水平仪》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载