Class: Google::Cloud::Vision::Image
- Inherits:
-
Object
- Object
- Google::Cloud::Vision::Image
- Defined in:
- lib/google/cloud/vision/image.rb,
lib/google/cloud/vision/image.rb
Overview
# Image
Represents an image for the Vision service.
See Project#image.
The Cloud Vision API supports a variety of image file formats, including JPEG, PNG8, PNG24, Animated GIF (first frame only), and RAW. See [Best Practices - Image Types](cloud.google.com/vision/docs/best-practices#image_types) for the list of formats. Be aware that Cloud Vision sets upper limits on file size as well as the total combined size of all images in a request. Reducing your file size can significantly improve throughput; however, be careful not to reduce image quality in the process. See [Best Practices - Image Sizing](cloud.google.com/vision/docs/best-practices#image_sizing) for current file size limits.
Defined Under Namespace
Classes: Context
Instance Attribute Summary collapse
-
#context ⇒ Context
readonly
Returns the image context for the image, which accepts metadata values such as location and language hints.
Class Method Summary collapse
- .from_io(io, vision) ⇒ Object
- .from_source(source, vision = nil) ⇒ Object
- .from_url(url, vision) ⇒ Object
Instance Method Summary collapse
-
#face ⇒ Annotation::Face
Performs the ‘FACE_DETECTION` feature on the image and returns only the first result.
-
#faces(max_results = Google::Cloud::Vision.default_max_faces) ⇒ Array<Annotation::Face>
Performs the ‘FACE_DETECTION` feature on the image.
-
#initialize ⇒ Image
constructor
A new instance of Image.
- #inspect ⇒ Object
- #io? ⇒ Boolean
-
#label ⇒ Annotation::Entity
Performs the ‘LABEL_DETECTION` feature on the image and returns only the first result.
-
#labels(max_results = Google::Cloud::Vision.default_max_labels) ⇒ Array<Annotation::Entity>
Performs the ‘LABEL_DETECTION` feature on the image.
-
#landmark ⇒ Annotation::Entity
Performs the ‘LANDMARK_DETECTION` feature on the image and returns only the first result.
-
#landmarks(max_results = Google::Cloud::Vision.default_max_landmarks) ⇒ Array<Annotation::Entity>
Performs the ‘LANDMARK_DETECTION` feature on the image.
-
#logo ⇒ Annotation::Entity
Performs the ‘LOGO_DETECTION` feature on the image and returns only the first result.
-
#logos(max_results = Google::Cloud::Vision.default_max_logos) ⇒ Array<Annotation::Entity>
Performs the ‘LOGO_DETECTION` feature on the image.
-
#properties ⇒ Annotation::Properties
Performs the ‘IMAGE_PROPERTIES` feature on the image.
-
#safe_search ⇒ Annotation::SafeSearch
Performs the ‘SAFE_SEARCH_DETECTION` feature on the image.
-
#text ⇒ Annotation::Text
Performs the ‘TEXT_DETECTION` (OCR) feature on the image.
- #to_grpc ⇒ Object
- #to_s ⇒ Object
- #url? ⇒ Boolean
Constructor Details
Instance Attribute Details
#context ⇒ Context (readonly)
Returns the image context for the image, which accepts metadata values such as location and language hints.
61 62 63 |
# File 'lib/google/cloud/vision/image.rb', line 61 def context @context end |
Class Method Details
.from_io(io, vision) ⇒ Object
377 378 379 380 381 382 383 384 385 |
# File 'lib/google/cloud/vision/image.rb', line 377 def self.from_io io, vision if !io.respond_to?(:read) && !io.respond_to?(:rewind) fail ArgumentError, "Cannot create an Image without an IO object" end new.tap do |i| i.instance_variable_set :@io, io i.instance_variable_set :@vision, vision end end |
.from_source(source, vision = nil) ⇒ Object
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 |
# File 'lib/google/cloud/vision/image.rb', line 355 def self.from_source source, vision = nil if source.respond_to?(:read) && source.respond_to?(:rewind) return from_io(source, vision) end # Convert Storage::File objects to the URL source = source.to_gs_url if source.respond_to? :to_gs_url # Everything should be a string from now on source = String source # Create an Image from the Google Storage URL return from_url(source, vision) if source.start_with? "gs://" # Create an image from a file on the filesystem if File.file? source unless File.readable? source fail ArgumentError, "Cannot read #{source}" end return from_io(File.open(source, "rb"), vision) end fail ArgumentError, "Unable to convert #{source} to an Image" end |
.from_url(url, vision) ⇒ Object
389 390 391 392 393 394 395 396 397 398 |
# File 'lib/google/cloud/vision/image.rb', line 389 def self.from_url url, vision url = String url unless url.start_with? "gs://" fail ArgumentError, "Cannot create an Image without a Storage URL" end new.tap do |i| i.instance_variable_set :@url, url i.instance_variable_set :@vision, vision end end |
Instance Method Details
#face ⇒ Annotation::Face
Performs the ‘FACE_DETECTION` feature on the image and returns only the first result.
120 121 122 |
# File 'lib/google/cloud/vision/image.rb', line 120 def face faces(1).first end |
#faces(max_results = Google::Cloud::Vision.default_max_faces) ⇒ Array<Annotation::Face>
Performs the ‘FACE_DETECTION` feature on the image.
108 109 110 111 112 |
# File 'lib/google/cloud/vision/image.rb', line 108 def faces max_results = Google::Cloud::Vision.default_max_faces ensure_vision! annotation = @vision.mark self, faces: max_results annotation.faces end |
#inspect ⇒ Object
334 335 336 |
# File 'lib/google/cloud/vision/image.rb', line 334 def inspect "#<#{self.class.name} #{self}>" end |
#io? ⇒ Boolean
75 76 77 |
# File 'lib/google/cloud/vision/image.rb', line 75 def io? !@io.nil? end |
#label ⇒ Annotation::Entity
Performs the ‘LABEL_DETECTION` feature on the image and returns only the first result.
238 239 240 |
# File 'lib/google/cloud/vision/image.rb', line 238 def label labels(1).first end |
#labels(max_results = Google::Cloud::Vision.default_max_labels) ⇒ Array<Annotation::Entity>
Performs the ‘LABEL_DETECTION` feature on the image.
226 227 228 229 230 |
# File 'lib/google/cloud/vision/image.rb', line 226 def labels max_results = Google::Cloud::Vision.default_max_labels ensure_vision! annotation = @vision.mark self, labels: max_results annotation.labels end |
#landmark ⇒ Annotation::Entity
Performs the ‘LANDMARK_DETECTION` feature on the image and returns only the first result.
159 160 161 |
# File 'lib/google/cloud/vision/image.rb', line 159 def landmark landmarks(1).first end |
#landmarks(max_results = Google::Cloud::Vision.default_max_landmarks) ⇒ Array<Annotation::Entity>
Performs the ‘LANDMARK_DETECTION` feature on the image.
147 148 149 150 151 |
# File 'lib/google/cloud/vision/image.rb', line 147 def landmarks max_results = Google::Cloud::Vision.default_max_landmarks ensure_vision! annotation = @vision.mark self, landmarks: max_results annotation.landmarks end |
#logo ⇒ Annotation::Entity
Performs the ‘LOGO_DETECTION` feature on the image and returns only the first result.
198 199 200 |
# File 'lib/google/cloud/vision/image.rb', line 198 def logo logos(1).first end |
#logos(max_results = Google::Cloud::Vision.default_max_logos) ⇒ Array<Annotation::Entity>
Performs the ‘LOGO_DETECTION` feature on the image.
186 187 188 189 190 |
# File 'lib/google/cloud/vision/image.rb', line 186 def logos max_results = Google::Cloud::Vision.default_max_logos ensure_vision! annotation = @vision.mark self, logos: max_results annotation.logos end |
#properties ⇒ Annotation::Properties
Performs the ‘IMAGE_PROPERTIES` feature on the image.
315 316 317 318 319 |
# File 'lib/google/cloud/vision/image.rb', line 315 def properties ensure_vision! annotation = @vision.mark self, properties: true annotation.properties end |
#safe_search ⇒ Annotation::SafeSearch
Performs the ‘SAFE_SEARCH_DETECTION` feature on the image.
287 288 289 290 291 |
# File 'lib/google/cloud/vision/image.rb', line 287 def safe_search ensure_vision! annotation = @vision.mark self, safe_search: true annotation.safe_search end |
#text ⇒ Annotation::Text
Performs the ‘TEXT_DETECTION` (OCR) feature on the image.
263 264 265 266 267 |
# File 'lib/google/cloud/vision/image.rb', line 263 def text ensure_vision! annotation = @vision.mark self, text: true annotation.text end |
#to_grpc ⇒ Object
340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'lib/google/cloud/vision/image.rb', line 340 def to_grpc if io? @io.rewind Google::Cloud::Vision::V1::Image.new content: @io.read elsif url? Google::Cloud::Vision::V1::Image.new( source: Google::Cloud::Vision::V1::ImageSource.new( gcs_image_uri: @url)) else fail ArgumentError, "Unable to use Image with Vision service." end end |
#to_s ⇒ Object
322 323 324 325 326 327 328 329 330 331 |
# File 'lib/google/cloud/vision/image.rb', line 322 def to_s @to_s ||= begin if io? @io.rewind "(#{@io.read(16)}...)" else "(#{@url})" end end end |
#url? ⇒ Boolean
82 83 84 |
# File 'lib/google/cloud/vision/image.rb', line 82 def url? !@url.nil? end |