# Copyright 2016 Google Inc.
#
# 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.
"""Image properties class representation derived from Vision API response."""
[docs]class ImagePropertiesAnnotation(object):
"""Representation of image properties
:type colors: list
:param colors: List of
:class:`~google.cloud.vision.color.ColorInformation`.
"""
def __init__(self, colors):
self._colors = colors
@classmethod
[docs] def from_api_repr(cls, response):
"""Factory: construct ``ImagePropertiesAnnotation`` from a response.
:type response: dict
:param response: Dictionary response from Vision API with image
properties data.
:rtype: :class:`~google.cloud.vision.color.ImagePropertiesAnnotation`.
:returns: Populated instance of ``ImagePropertiesAnnotation``.
"""
colors = [ColorInformation.from_api_repr(color) for color in
response['dominantColors']['colors']]
return cls(colors)
@property
def colors(self):
"""Colors in an image.
:rtype: list of :class:`~google.cloud.vision.color.ColorInformation`
:returns: Populated list of ``ColorInformation``.
"""
return self._colors
[docs]class Color(object):
"""Representation of RGBA color information.
:type red: int
:param red: The amount of red in the color as a value in the interval
[0, 255].
:type green: int
:param green: The amount of green in the color as a value in the interval
[0, 255].
:type blue: int
:param blue: The amount of blue in the color as a value in the interval
[0, 255].
:type alpha: float
:param alpha: The fraction of this color that should be applied to the
pixel.
"""
def __init__(self, red, green, blue, alpha):
self._red = red
self._green = green
self._blue = blue
self._alpha = alpha
@classmethod
[docs] def from_api_repr(cls, response):
"""Factory: construct a ``Color`` from a Vision API response.
:type response: dict
:param response: Color from API Response.
:rtype: :class:`~google.cloud.vision.color.Color`
:returns: Instance of :class:`~google.cloud.vision.color.Color`.
"""
red = response['red']
green = response['green']
blue = response['blue']
alpha = response.get('alpha')
return cls(red, green, blue, alpha)
@property
def red(self):
"""Red component of the color.
:rtype: int
:returns: Red RGB value.
"""
return self._red
@property
def green(self):
"""Green component of the color.
:rtype: int
:returns: Green RGB value.
"""
return self._green
@property
def blue(self):
"""Blue component of the color.
:rtype: int
:returns: Blue RGB value.
"""
return self._blue
@property
def alpha(self):
"""Alpha transparency level.
:rtype: float
:returns: Alpha transparency level.
"""
return self._alpha