mediaplug2-ruby 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mediaplug/mediaplug_url.rb +127 -25
- metadata +2 -2
@@ -41,8 +41,8 @@ class MediaPlugURL
|
|
41
41
|
argument = argument.split("x") if argument.is_a?(String)
|
42
42
|
action << "width=#{argument[0]} height=#{argument[1]}"
|
43
43
|
when Hash
|
44
|
-
argument.keys.each{ |k| argument[k.
|
45
|
-
action << "#{"width=#{argument[
|
44
|
+
argument.keys.each{ |k| argument[k.to_sym] = argument[k] }
|
45
|
+
action << "#{"width=#{argument[:width]}" if argument[:width]}#{" height=#{argument[:height]}" if argument[:height]}"
|
46
46
|
end
|
47
47
|
|
48
48
|
action << " format=#{@format}"
|
@@ -51,10 +51,10 @@ class MediaPlugURL
|
|
51
51
|
self
|
52
52
|
end
|
53
53
|
|
54
|
-
# <b>Image Only:</b> Crop an image based on the input provided.
|
55
|
-
#
|
56
|
-
# the
|
57
|
-
# provide will determine which kind of cropping is employed.
|
54
|
+
# <b>Image Only:</b> Crop an image based on the input provided.
|
55
|
+
# Gravity setting applies to Image only, default is center.
|
56
|
+
# In Video Cropping, the cropping offset is default to [(original_width - crop_width)/2, (original_height - crop_height)/2] if no offset values are specified.
|
57
|
+
# the arguments you provide will determine which kind of cropping is employed.
|
58
58
|
#
|
59
59
|
# Cropping:
|
60
60
|
#
|
@@ -65,33 +65,34 @@ class MediaPlugURL
|
|
65
65
|
|
66
66
|
# Options:
|
67
67
|
#
|
68
|
-
# - <tt>:gravity</tt>: The position of crop. May be any of NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Default is center.
|
68
|
+
# - <tt>:gravity</tt>: *Image Only* The position of crop. May be any of NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Default is center.
|
69
69
|
# - <tt>:x-offset</tt>: x coordinate offset of the top-left corner related to center position set by the gravity parameter.
|
70
70
|
# - <tt>:y-offset</tt>: y coordinate offset of the top-left corner related to center position set by the gravity parameter.
|
71
71
|
#
|
72
72
|
#
|
73
73
|
def crop(string_or_hash_or_array)
|
74
74
|
argument = string_or_hash_or_array
|
75
|
-
raise MediaPlug::InvalidAction, "Only images may be cropped." unless image?
|
76
|
-
action = "crop "
|
75
|
+
raise MediaPlug::InvalidAction, "Only images or videos may be cropped." unless image? || video?
|
76
|
+
action = image? ? "crop " : "video_crop "
|
77
77
|
|
78
78
|
case argument
|
79
79
|
when String, Array
|
80
|
-
argument = argument.split("x") if argument.is_a?(String)
|
81
|
-
action << "gravity=center
|
80
|
+
argument = argument.split("x") if argument.is_a?(String)
|
81
|
+
action << "gravity=center " if image?
|
82
|
+
action << "width=#{argument[0]} height=#{argument[1]} "
|
82
83
|
when Hash
|
83
|
-
argument.keys.each{|k| argument[k.
|
84
|
-
action << "gravity=#{argument[
|
85
|
-
action << "x-offset=#{argument[
|
86
|
-
action << "y-offset=#{argument[
|
87
|
-
if argument[
|
88
|
-
action << "
|
84
|
+
argument.keys.each{|k| argument[k.to_sym] = argument.delete(k)}
|
85
|
+
action << "gravity=#{argument[:gravity]} " if argument[:gravity] && image?
|
86
|
+
action << "x-offset=#{argument[:x_offset]} " if argument[:x_offset]
|
87
|
+
action << "y-offset=#{argument[:y_offset]} " if argument[:y_offset]
|
88
|
+
if argument[:width] && argument[:height]
|
89
|
+
action << "width=#{argument[:width]} height=#{argument[:height]} "
|
89
90
|
else
|
90
91
|
raise MediaPlug::InvalidAction, "Could not understand the options given to the crop command."
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
|
-
action << "
|
95
|
+
action << "format=#{@format}"
|
95
96
|
@actions << action
|
96
97
|
self
|
97
98
|
end
|
@@ -136,10 +137,15 @@ class MediaPlugURL
|
|
136
137
|
# image = mp.image('http://some.url/')
|
137
138
|
# image.flip(:both)
|
138
139
|
def flip(direction)
|
139
|
-
raise MediaPlug::InvalidAction, "Only images may be flipped." unless image?
|
140
|
+
raise MediaPlug::InvalidAction, "Only images or video may be flipped." unless image? || video?
|
140
141
|
argument = direction
|
141
142
|
argument = FLIP_MAP[argument.to_s] if FLIP_MAP.key?(argument.to_s)
|
143
|
+
if image?
|
142
144
|
"flip #{argument} format=#{@format}"
|
145
|
+
else
|
146
|
+
"video_flip #{argument} format=#{@format}"
|
147
|
+
end
|
148
|
+
self
|
143
149
|
end
|
144
150
|
# <b>Image Only:</b> Create SWIRLING effect on the image by the given number of amplitude and wavelength.
|
145
151
|
#
|
@@ -169,11 +175,12 @@ class MediaPlugURL
|
|
169
175
|
def polaroid(options={})
|
170
176
|
raise MediaPlug::InvalidAction, "Only images may be swirled." unless image?
|
171
177
|
action = "polaroid "
|
178
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
172
179
|
|
173
180
|
action << "angle=#{options[:angle]} " if options[:angle]
|
174
181
|
action << "caption=#{options[:caption]} " if options[:caption]
|
175
182
|
|
176
|
-
action << "
|
183
|
+
action << "format=#{@format}"
|
177
184
|
@actions << action
|
178
185
|
self
|
179
186
|
end
|
@@ -187,7 +194,7 @@ class MediaPlugURL
|
|
187
194
|
raise MediaPlug::InvalidAction, "Only images may be swirled." unless image?
|
188
195
|
action = "water_reflection "
|
189
196
|
|
190
|
-
action << "
|
197
|
+
action << "format=#{@format}"
|
191
198
|
@actions << action
|
192
199
|
self
|
193
200
|
end
|
@@ -204,9 +211,10 @@ class MediaPlugURL
|
|
204
211
|
def filter(filter_type, options={})
|
205
212
|
raise MediaPlug::InvalidAction, "Only images may be swirled." unless image?
|
206
213
|
action = "filter "
|
207
|
-
action << "filter_type=#{filter_type} "
|
214
|
+
action << "filter_type=#{filter_type} "
|
215
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
208
216
|
action << "level=#{options[:level]} " if options[:level]
|
209
|
-
action << "
|
217
|
+
action << "format=#{@format}"
|
210
218
|
@actions << action
|
211
219
|
self
|
212
220
|
end
|
@@ -242,22 +250,33 @@ class MediaPlugURL
|
|
242
250
|
@actions << action
|
243
251
|
self
|
244
252
|
end
|
245
|
-
# <b>Image Only:</b> Watermark an image with text or with another image
|
253
|
+
# <b>Image Only:</b> Watermark an image with text or with another image
|
246
254
|
# The +watermark_type+ may be +:image+ or +:text+.
|
247
255
|
#
|
248
256
|
# Options:
|
249
257
|
#
|
250
258
|
# - <tt>:gravity</tt>: The position of the watermark. May be any of NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Default is center.
|
251
259
|
# - <tt>:alpha</tt>: value from 0.0 to 1.0 indicating the opacity of the watermark. Default is 0.6.
|
260
|
+
# - <tt>:x_offset</tt>: x coordinate offset of the top-left corner related to center position set by the gravity parameter.
|
261
|
+
# - <tt>:y_offset</tt>: y coordinate offset of the top-left corner related to center position set by the gravity parameter.
|
252
262
|
#
|
253
263
|
# Text-Only Options
|
254
264
|
#
|
255
265
|
# - <tt>:weight</tt>: the weight of the text font, maybe All,Bold,Bolder,Lighter,Normal. Default is Normal.
|
256
266
|
# - <tt>:style</tt>: The style of the text font, maybe Any, Italic, Normal, Oblique
|
257
267
|
# - <tt>:font_size</tt>: Integer, pixel size of the font to use on the watermark.
|
268
|
+
# - <tt>:font_type</tt>: Font type, possible values are:
|
269
|
+
# AvantGarde-Book, AvantGarde-BookOblique, AvantGarde-Demi, AvantGarde-DemiOblique, Bookman-Demi, Bookman-DemiItalic, Bookman-Light, Bookman-LightItalic
|
270
|
+
# Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Narrow, Helvetica-Narrow-Bold
|
271
|
+
# Helvetica-Narrow-BoldOblique, Helvetica-Narrow-Oblique, Helvetica-Oblique, Palatino-Bold, Palatino-BoldItalic, Palatino-Italic, Palatino-Roman
|
272
|
+
# Symbol, Times-Bold, Times-BoldItalic, Times-Italic, Times-Roman, Century-Schoolbook-Bold, Century-Schoolbook-Bold-Italic, Century-Schoolbook-Italic
|
273
|
+
# Century-Schoolbook-Roman, DejaVu-Sans-Bold, DejaVu-Sans-Book, DejaVu-Sans-Mono-Bold, DejaVu-Sans-Mono-Book, DejaVu-Serif-Bold, DejaVu-Serif-Book
|
274
|
+
# Dingbats-Regular, URW-Chancery-Medium-Italic
|
275
|
+
|
258
276
|
def watermark(watermark_type, text_or_url, options = {})
|
259
277
|
raise MediaPlug::InvalidAction, "Only images may be watermarked." unless image?
|
260
278
|
action = "watermark "
|
279
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
261
280
|
|
262
281
|
case watermark_type
|
263
282
|
when :image
|
@@ -267,24 +286,49 @@ class MediaPlugURL
|
|
267
286
|
action << "style=#{options[:style]} " if options[:style]
|
268
287
|
action << "weight=#{options[:weight]} " if options[:weight]
|
269
288
|
action << "text-font-size=#{options[:font_size]} " if options[:font_size]
|
289
|
+
action << "font-type=#{options[:font_type]} " if options[:font_type]
|
270
290
|
else
|
271
291
|
raise MediaPlug::InvalidAction, "The watermark_type must be :image or :text"
|
272
292
|
end
|
273
293
|
|
274
294
|
action << "gravity=#{options[:gravity]} " if options[:gravity]
|
275
295
|
action << "alpha=#{options[:alpha]} " if options[:alpha]
|
296
|
+
action << "x-offset=#{argument[:x_offset]} " if argument[:x_offset]
|
297
|
+
action << "y-offset=#{argument[:y_offset]} " if argument[:y_offset]
|
298
|
+
|
276
299
|
action << "format=#{@format}"
|
277
300
|
|
278
301
|
@actions << action
|
279
302
|
self
|
280
303
|
end
|
304
|
+
# <b>Image Only:</b> Apply detection filters to the Image.
|
305
|
+
# - <tt>:detection_type</tt>: can be Face, Background, or Edge.
|
306
|
+
# Face detection automatically detect faces in the image using Computer Vision Algorithm,
|
307
|
+
# and draws retangular around the detected area.
|
308
|
+
# Edge detection detects edges in the image.
|
309
|
+
# background removal automatically create transparent background using AI algorithm.
|
310
|
+
|
311
|
+
# Example:
|
312
|
+
#
|
313
|
+
# image = mp.image('http://some.url/')
|
314
|
+
# image.detection('Face') #apply face detection on the Image
|
281
315
|
|
316
|
+
def detection(detection_type, options = {})
|
317
|
+
raise MediaPlug::InvalidAction, "Only images may be detected." unless image?
|
318
|
+
action = "detection "
|
319
|
+
|
320
|
+
action << "type=#{detection_type} "
|
321
|
+
action << "format=#{@format}"
|
322
|
+
|
323
|
+
@actions << action
|
324
|
+
self
|
325
|
+
end
|
282
326
|
# Converts the source into the specified format, with the options provided
|
283
327
|
# (options vary based on media type).
|
284
328
|
#
|
285
329
|
# Allowable Formats:
|
286
330
|
#
|
287
|
-
# - <b>Video:</b> flv, ipod, psp, 3gpp
|
331
|
+
# - <b>Video:</b> flv, mp4, mov, ipod, psp, 3gpp
|
288
332
|
# - <b>Audio:</b> mp3
|
289
333
|
# - <b>Image:</b> jpg, png, gif
|
290
334
|
#
|
@@ -299,6 +343,8 @@ class MediaPlugURL
|
|
299
343
|
# - <tt>:bitrate</tt>: The bitrate in which to encode (e.g. "64k")
|
300
344
|
# - <tt>:samplerate</tt>: The sample rate with which to encode (e.g. 128)
|
301
345
|
def convert(new_format, options = {})
|
346
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
347
|
+
|
302
348
|
if image?
|
303
349
|
action = "rotate 0 format=#{new_format}"
|
304
350
|
elsif audio?
|
@@ -322,6 +368,8 @@ class MediaPlugURL
|
|
322
368
|
# - <tt>:height</tt>: The height of thumbnail image
|
323
369
|
def thumbnail(seek, options={})
|
324
370
|
raise MediaPlug::InvalidAction, "Only videos may be thumbnailed." unless video?
|
371
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
372
|
+
|
325
373
|
action = "thumbnail seek=#{seek}"
|
326
374
|
action << " width=#{options[:width]}" if options[:width]
|
327
375
|
action << " height=#{options[:height]}" if options[:height]
|
@@ -338,6 +386,8 @@ class MediaPlugURL
|
|
338
386
|
# - <tt>:height</tt>: The height of thumbnail image
|
339
387
|
def preview(framestep, options={})
|
340
388
|
raise MediaPlug::InvalidAction, "Only videos may be previewed." unless video?
|
389
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
390
|
+
|
341
391
|
action = "preview framestep=#{framestep}"
|
342
392
|
action << " width=#{options[:width]}" if options[:width]
|
343
393
|
action << " height=#{options[:height]}" if options[:height]
|
@@ -345,6 +395,58 @@ class MediaPlugURL
|
|
345
395
|
@actions << action
|
346
396
|
self
|
347
397
|
end
|
398
|
+
# <b>Video Only:</b> Add text water mark to a video
|
399
|
+
# Video Watermark Options:
|
400
|
+
#
|
401
|
+
# - <tt>:font_size</tt>: Integer, pixel size of the font to use on the watermark.
|
402
|
+
# - <tt>:font_type</tt>: Font type, possible values are:
|
403
|
+
# AvantGarde-Book, AvantGarde-BookOblique, AvantGarde-Demi, AvantGarde-DemiOblique, Bookman-Demi, Bookman-DemiItalic, Bookman-Light, Bookman-LightItalic
|
404
|
+
# Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Narrow, Helvetica-Narrow-Bold
|
405
|
+
# Helvetica-Narrow-BoldOblique, Helvetica-Narrow-Oblique, Helvetica-Oblique, Palatino-Bold, Palatino-BoldItalic, Palatino-Italic, Palatino-Roman
|
406
|
+
# Symbol, Times-Bold, Times-BoldItalic, Times-Italic, Times-Roman, Century-Schoolbook-Bold, Century-Schoolbook-Bold-Italic, Century-Schoolbook-Italic
|
407
|
+
# Century-Schoolbook-Roman, DejaVu-Sans-Bold, DejaVu-Sans-Book, DejaVu-Sans-Mono-Bold, DejaVu-Sans-Mono-Book, DejaVu-Serif-Bold, DejaVu-Serif-Book
|
408
|
+
# Dingbats-Regular, URW-Chancery-Medium-Italic
|
409
|
+
# - <tt>:x_offset</tt>: integer, x-offset, x coordiante for the location of the top left corner of text watermark
|
410
|
+
# - <tt>:y_offset</tt>: integer, y-offset, y coordiante for the location of the top left corner of text watermark
|
411
|
+
# - <tt>:font_color</tt>: The color to be used for drawing fonts. Either a string (e.g. "red") or in 0xRRGGBB[AA] format (e.g. "0xff000033"), possibly followed by an alpha specifier (red@0.2 red withe alpah = 0.2).
|
412
|
+
# The default value of fontcolor is "0x80acbc44".
|
413
|
+
# - <tt>:bg_color</tt>: The color to be used for drawing box around text. Either a string (e.g. "yellow") or in 0xRRGGBB[AA] format (e.g. "0xff00ff"), possibly followed by an alpha specifier (red@0.2 red withe alpah = 0.2).
|
414
|
+
# If no value is specified, no box will be drawn around the text.
|
415
|
+
|
416
|
+
def video_watermark(text, options={})
|
417
|
+
raise MediaPlug::InvalidAction, "Only videos may be video watermarked." unless video?
|
418
|
+
options.keys.each{|k| options[k.to_sym] = options.delete(k)}
|
419
|
+
|
420
|
+
action = "video_watermark text=#{text}"
|
421
|
+
action << " text-font-size=#{options[:font_size]}" if options[:font_size]
|
422
|
+
action << " x-offset=#{argument[:x_offset]} " if argument[:x_offset]
|
423
|
+
action << " y-offset=#{argument[:y_offset]} " if argument[:y_offset]
|
424
|
+
action << " font-color=#{options[:font_color]}" if options[:font_color]
|
425
|
+
action << " bg-color=#{options[:bg_color]}" if options[:bg_color]
|
426
|
+
action << " format=#{@format}"
|
427
|
+
|
428
|
+
@actions << action
|
429
|
+
self
|
430
|
+
end
|
431
|
+
|
432
|
+
# <b>Video and Audio Only:</b> Clip the video or audio to any duration and starts at the specified time.
|
433
|
+
# Video Preview Options:
|
434
|
+
#
|
435
|
+
# Framestep is duration in seconds of per frame capture
|
436
|
+
# - <tt>:width</tt>: The width of thumbnail image
|
437
|
+
# - <tt>:height</tt>: The height of thumbnail image
|
438
|
+
def clipping(start_at, duration, options={})
|
439
|
+
raise MediaPlug::InvalidAction, "Only audio or video may be clipped." unless video? or audio?
|
440
|
+
|
441
|
+
action = video? ? "video_clipping " : "audio_clipping "
|
442
|
+
|
443
|
+
action << " start=#{start_at}" if start_at
|
444
|
+
action << " duration=#{duration}" if duration
|
445
|
+
action << " format=#{@format}"
|
446
|
+
|
447
|
+
@actions << action
|
448
|
+
self
|
449
|
+
end
|
348
450
|
# Causes the resultant URL to be recached. Should not be called
|
349
451
|
# each time.
|
350
452
|
def recache!
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mediaplug2-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Michael Bleigh
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-08-16 00:00:00 -05:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|