java:SWT 缩放图像(Image)

版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/53381689

在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.csdn.net/zhangzh332/article/details/6687812

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券