Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright 2013 Alibaba.com All right reserved. This software is the
  * confidential and proprietary information of Alibaba.com ("Confidential
  * Information"). You shall not disclose such Confidential Information and shall
  * use it only in accordance with the terms of the license agreement you entered
  * into with Alibaba.com.
  */
 package com.alibaba.simpleimage.analyze.sift.render;
 
类RenderImage.java的实现描述:TODO 类实现描述

Author(s):
axman 2013-6-27 上午10:09:16
public class RenderImage {
    private BufferedImage srcImage;
    public RenderImage(BufferedImage srcImage){
        this. = srcImage;
    }
    public int getWidth() {
        return this..getWidth();
    }
    public int getHeight() {
        return this..getHeight();
    }
    public float scaleWithin(int dim) {
        if (this..getWidth() <= dim && this..getHeight() <= dimreturn 1.0f;
        float xScala = (floatdim / this..getWidth();
        float yScala = (floatdim / this..getHeight();
        float smallestScala = xScala <= yScala ? xScala : yScala// 取最小的比例
        // 创建一个缩小后的位图
        BufferedImage bmScalaed = new BufferedImage((int) (this..getWidth() * smallestScala + 0.5),
                                                    (int) (this..getHeight() * smallestScala + 0.5),
                                                    .);
        Graphics2D g = bmScalaed.createGraphics();
        g.drawImage(this., 0, 0, (int) (this..getWidth() * smallestScala),
                    (int) (this..getHeight() * smallestScala), null);
        // TODO,这里可以优化
        this. = bmScalaed;
        return smallestScala;
    }
    public ImagePixelArray toPixelFloatArray(IPixelConverter converter) {
        int h = this..getHeight();
        int w = this..getWidth();
        ImagePixelArray res = new ImagePixelArray(wh);
        int[] pix = .getRGB(0, 0, whnull, 0, w);
        for (int y = 0; y < hy++) {
            for (int x = 0; x < wx++) {
                int c = pix[x + y * w];
                int R = (c >> 16) & 0xFF;
                int G = (c >> 8) & 0xFF;
                int B = (c >> 0) & 0xFF;
                if (converter == nullres.data[x + y * w] = (R + G + B) / (255.0f * 3.0f); // 默认实现直接计算,减少h*w次方法调用
                else res.data[x + y * w] = converter.convert(RGB);
            }
        }
        return res;
    }
New to GrepCode? Check out our FAQ X