Class: Gcloud::Vision::Image
- Inherits:
-
Object
- Object
- Gcloud::Vision::Image
- Defined in:
- lib/gcloud/vision/image.rb,
lib/gcloud/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/image-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/image-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 = Gcloud::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 = Gcloud::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 = Gcloud::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 = Gcloud::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_gapi ⇒ Object
- #to_s ⇒ Object
- #url ⇒ String
- #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.
60 61 62 |
# File 'lib/gcloud/vision/image.rb', line 60 def context @context end |
Class Method Details
.from_io(io, vision) ⇒ Object
390 391 392 393 394 395 396 397 398 |
# File 'lib/gcloud/vision/image.rb', line 390 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
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 |
# File 'lib/gcloud/vision/image.rb', line 368 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
402 403 404 405 406 407 408 409 410 411 |
# File 'lib/gcloud/vision/image.rb', line 402 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.
129 130 131 |
# File 'lib/gcloud/vision/image.rb', line 129 def face faces(1).first end |
#faces(max_results = Gcloud::Vision.default_max_faces) ⇒ Array<Annotation::Face>
Performs the ‘FACE_DETECTION` feature on the image.
117 118 119 120 121 |
# File 'lib/gcloud/vision/image.rb', line 117 def faces max_results = Gcloud::Vision.default_max_faces ensure_vision! annotation = @vision.mark self, faces: max_results annotation.faces end |
#inspect ⇒ Object
349 350 351 |
# File 'lib/gcloud/vision/image.rb', line 349 def inspect "#<#{self.class.name} #{self}>" end |
#io? ⇒ Boolean
74 75 76 |
# File 'lib/gcloud/vision/image.rb', line 74 def io? !@io.nil? end |
#label ⇒ Annotation::Entity
Performs the ‘LABEL_DETECTION` feature on the image and returns only the first result.
250 251 252 |
# File 'lib/gcloud/vision/image.rb', line 250 def label labels(1).first end |
#labels(max_results = Gcloud::Vision.default_max_labels) ⇒ Array<Annotation::Entity>
Performs the ‘LABEL_DETECTION` feature on the image.
238 239 240 241 242 |
# File 'lib/gcloud/vision/image.rb', line 238 def labels max_results = Gcloud::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.
169 170 171 |
# File 'lib/gcloud/vision/image.rb', line 169 def landmark landmarks(1).first end |
#landmarks(max_results = Gcloud::Vision.default_max_landmarks) ⇒ Array<Annotation::Entity>
Performs the ‘LANDMARK_DETECTION` feature on the image.
157 158 159 160 161 |
# File 'lib/gcloud/vision/image.rb', line 157 def landmarks max_results = Gcloud::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.
209 210 211 |
# File 'lib/gcloud/vision/image.rb', line 209 def logo logos(1).first end |
#logos(max_results = Gcloud::Vision.default_max_logos) ⇒ Array<Annotation::Entity>
Performs the ‘LOGO_DETECTION` feature on the image.
197 198 199 200 201 |
# File 'lib/gcloud/vision/image.rb', line 197 def logos max_results = Gcloud::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.
330 331 332 333 334 |
# File 'lib/gcloud/vision/image.rb', line 330 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.
301 302 303 304 305 |
# File 'lib/gcloud/vision/image.rb', line 301 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.
276 277 278 279 280 |
# File 'lib/gcloud/vision/image.rb', line 276 def text ensure_vision! annotation = @vision.mark self, text: true annotation.text end |
#to_gapi ⇒ Object
355 356 357 358 359 360 361 362 363 364 |
# File 'lib/gcloud/vision/image.rb', line 355 def to_gapi if io? @io.rewind Google::Apis::VisionV1::Image.new content: @io.read elsif url? Google::Apis::VisionV1::Image.new source: { gcsImageUri: @url } else fail ArgumentError, "Unable to use Image with Vision service." end end |
#to_s ⇒ Object
337 338 339 340 341 342 343 344 345 346 |
# File 'lib/gcloud/vision/image.rb', line 337 def to_s @to_s ||= begin if io? @io.rewind "(#{@io.read(16)}...)" else "(#{url})" end end end |
#url ⇒ String
90 91 92 |
# File 'lib/gcloud/vision/image.rb', line 90 def url @url end |
#url? ⇒ Boolean
81 82 83 |
# File 'lib/gcloud/vision/image.rb', line 81 def url? !@url.nil? end |