java:SWT 缩放图像(Image)

本文介绍了使用SWT中的GC.drawImage方法和ImageData.scaledTo方法实现图像缩放的技术细节,并推荐了为了保证图像质量应优先选择GC.drawImage方法。文中还提供了两种自定义图像缩放方法的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在SWT中下面两个方法都可以实现Image缩放,

GC.drawImage(Image image, int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight);
ImageData.scaledTo(int width, int height)

但是为了保证缩放图像质量,还是用GC.drawImage好一些。

    /**
     * 根据指定的宽高对{@link Image}图像进行绽放
     * @param src 原图对象
     * @param width 目标图像宽度
     * @param height 目标图像高度
     * @return 返回缩放后的{@link Image}对象
     */
    private Image resize(Image src, int width, int height) {
        Image scaled = new Image(Display.getDefault(), width, height);
        GC gc = new GC(scaled);
        try{
            gc.setAdvanced(true); 、// 打开高级绘图模式
            gc.setAntialias(SWT.ON);// 设置消除锯齿
            gc.setInterpolation(SWT.HIGH); // 设置插值
            gc.drawImage(src, 0, 0, src.getBounds().width, src.getBounds().height,0, 0, width, height);
        }finally{
            gc.dispose();
        }
        return scaled;
    }
    /**
     * 根据缩放比例对{@link Image}对象进行缩放
     * @param src 原图对象
     * @param zoom 缩放比例
     * @return 返回缩放后的{@link Image}对象
     */
    private Image resize(Image src, float zoom) {
        Rectangle bounds = src.getBounds();
        bounds.width*=zoom;
        bounds.height*=zoom;
        return resize(src,bounds.width,bounds.height);
    }

参考资料:
http://www.ibm.com/developerworks/cn/opensource/os-cn-swtimage2/
http://blog.youkuaiyun.com/zhangzh332/article/details/6687812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值