Returns a single RGB int value from YUV data, suitable for passing to Bitmap.setPixel and similar methods. - Android Graphics

Android examples for Graphics:Bitmap Color

Description

Returns a single RGB int value from YUV data, suitable for passing to Bitmap.setPixel and similar methods.

Demo Code

/* //from  w  w  w . j a v  a 2 s.  co  m
 * Copyright 2012 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//package com.java2s;

public class Main {
    /** Returns a single RGB int value from YUV data, suitable for passing to Bitmap.setPixel and similar methods. */
    public static int colorFromYuv(byte y, byte u, byte v) {
        int yy = (0xff & y) - 16;
        if (yy < 0)
            yy = 0;
        // u and v need to be translated to +-128
        int uu = (0xff & u) - 128;
        int vv = (0xff & v) - 128;

        int y1192 = 1192 * yy;
        int red = (y1192 + 1634 * vv) >> 10;
        int green = (y1192 - 833 * vv - 400 * uu) >> 10;
        int blue = (y1192 + 2066 * uu) >> 10;

        if (red < 0)
            red = 0;
        if (red > 255)
            red = 255;
        if (green < 0)
            green = 0;
        if (green > 255)
            green = 255;
        if (blue < 0)
            blue = 0;
        if (blue > 255)
            blue = 255;

        return (0xff << 24) | (red << 16) | (green << 8) | blue;
    }
}

Related Tutorials