diff --git a/Gemfile.lock b/Gemfile.lock
index 90998b9..9c014f2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- qiniu-rs (2.3.1)
+ qiniu-rs (2.3.3)
json (~> 1.7.3)
mime-types (~> 1.19)
rest-client (~> 1.6.7)
diff --git a/docs/README.md b/docs/README.md
index 4ab6a77..8515525 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -31,6 +31,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
- [取消公开外链](#unpublish)
- [图像处理](#op-image)
- [查看图片属性信息](#image_info)
+ - [查看图片EXIF信息](#image_exif)
- [获取指定规格的缩略图预览地址](#image_preview_url)
- [高级图像处理(缩略、裁剪、旋转、转化)](#image_mogrify_preview_url)
- [高级图像处理(缩略、裁剪、旋转、转化)并持久化](#image_mogrify_save_as)
@@ -484,6 +485,24 @@ height
colorModel
: 原始图片着色模式
+
+
+#### 查看图片EXIF信息
+
+ Qiniu::RS.image_exif(url)
+
+使用 SDK 提供的 `Qiniu::RS.image_exif` 方法,可以基于一张存储于七牛云存储服务器上的原始图片图片,取到该图片的 EXIF 信息。
+
+**参数**
+
+url
+: 必须,字符串类型(String),原图的下载链接,需是 `Qiniu::RS.get`(或`Qiniu::RS.batch_get`)函数返回值中 `url` 字段的值,或者是 `Qiniu::RS.download`(或`Qiniu::RS.batch_download`)函数返回的下载链接。且文件本身必须是图片。
+
+**返回值**
+
+如果参数 `url` 所代表的图片没有 EXIF 信息,返回 `false`。否则,返回一个包含 EXIF 信息的 Hash 结构。
+
+
#### 获取指定规格的缩略图预览地址
@@ -505,6 +524,7 @@ spec
返回一个字符串类型的缩略图 URL
+
#### 高级图像处理(缩略、裁剪、旋转、转化)
@@ -533,7 +553,7 @@ mogrify_options
:auto_orient =>
}
-`Qiniu::RS.image_mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](#/v2/api/foimg/#fo-imageMogr)。
+`Qiniu::RS.image_mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](/v2/api/foimg/#fo-imageMogr)。
**返回值**
@@ -574,7 +594,7 @@ mogrify_options
:auto_orient =>
}
-`Qiniu::RS::Image.mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](#/v2/api/foimg/#fo-imageMogr)。
+`Qiniu::RS::Image.mogrify_preview_url()` 方法是对七牛云存储图像处理高级接口的完整包装,关于 `mogrify_options` 参数里边的具体含义和使用方式,可以参考文档:[图像处理高级接口](/v2/api/foimg/#fo-imageMogr)。
**返回值**
diff --git a/lib/qiniu/rs.rb b/lib/qiniu/rs.rb
index 0335d64..d02e824 100755
--- a/lib/qiniu/rs.rb
+++ b/lib/qiniu/rs.rb
@@ -124,6 +124,11 @@ module Qiniu
code == StatusOK ? data : false
end
+ def image_exif(url)
+ code, data = Image.exif(url)
+ code == StatusOK ? data : false
+ end
+
def image_preview_url(url, spec)
Image.preivew_url(url, spec)
end
diff --git a/lib/qiniu/rs/auth.rb b/lib/qiniu/rs/auth.rb
index f254013..226f61b 100755
--- a/lib/qiniu/rs/auth.rb
+++ b/lib/qiniu/rs/auth.rb
@@ -59,7 +59,7 @@ module Qiniu
end
def call_with_signature(url, data, retry_times = 0, options = {})
- code, data = http_request url, data, options.merge!({:qbox_signature_token => generate_qbox_signature(url, data)})
+ code, data = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data)})
[code, data]
end
@@ -68,7 +68,7 @@ module Qiniu
if Config.settings[:access_key].empty? || Config.settings[:secret_key].empty?
code, data = Auth.call_with_logged_in(url, data)
else
- code, data = Auth.call_with_signature(url, data, options)
+ code, data = Auth.call_with_signature(url, data, 0, options)
end
rescue [MissingAccessToken, MissingRefreshToken, MissingUsernameOrPassword] => e
Log.logger.error e
diff --git a/lib/qiniu/rs/image.rb b/lib/qiniu/rs/image.rb
index 7866c67..63091b5 100755
--- a/lib/qiniu/rs/image.rb
+++ b/lib/qiniu/rs/image.rb
@@ -10,6 +10,10 @@ module Qiniu
Utils.http_request url + '/imageInfo', nil, {:method => :get}
end
+ def exif(url)
+ Utils.http_request url + '?exif', nil, {:method => :get}
+ end
+
def preivew_url(url, spec)
url + '/imagePreview/' + spec.to_s
end
@@ -29,7 +33,7 @@ module Qiniu
params_string += %Q(/#{key}/#{opts[key]}) unless opts[key].nil?
end
params_string += '/auto-orient' unless opts["auto_orient"].nil?
- 'imageMogr' + params_string
+ 'imageMogr' + URI.escape(params_string)
end
end
diff --git a/lib/qiniu/rs/utils.rb b/lib/qiniu/rs/utils.rb
index b5d4741..dc7a5e4 100755
--- a/lib/qiniu/rs/utils.rb
+++ b/lib/qiniu/rs/utils.rb
@@ -49,10 +49,10 @@ module Qiniu
header_options.merge!('Authorization' => auth_token) unless auth_token.nil?
case options[:method]
when :get
- response = RestClient.get url, header_options
+ response = RestClient.get(url, header_options)
when :post
header_options.merge!(:content_type => options[:content_type])
- response = RestClient.post url, data, header_options
+ response = RestClient.post(url, data, header_options)
end
code = response.respond_to?(:code) ? response.code.to_i : 0
if code != 200
diff --git a/lib/qiniu/rs/version.rb b/lib/qiniu/rs/version.rb
index 162a3bc..e72d26a 100755
--- a/lib/qiniu/rs/version.rb
+++ b/lib/qiniu/rs/version.rb
@@ -2,6 +2,6 @@
module Qiniu
module RS
- VERSION = "2.3.1"
+ VERSION = "2.3.3"
end
end
diff --git a/spec/qiniu/rs/image_spec.rb b/spec/qiniu/rs/image_spec.rb
index f603b38..c01ab00 100755
--- a/spec/qiniu/rs/image_spec.rb
+++ b/spec/qiniu/rs/image_spec.rb
@@ -36,7 +36,6 @@ module Qiniu
:file => local_file,
:bucket => @bucket,
:key => @key,
- :mime_type => "image/png",
:enable_crc32_check => true
result.should be_true
@@ -47,7 +46,7 @@ module Qiniu
@source_image_url = result["url"]
@mogrify_options = {
- :thumbnail => "!120x120r",
+ :thumbnail => "!120x120>",
:gravity => "center",
:crop => "!120x120a0a0",
:quality => 85,
@@ -65,6 +64,13 @@ module Qiniu
end
end
+ context ".exif" do
+ it "should works" do
+ code, data = Qiniu::RS::Image.exif(@source_image_url)
+ puts data.inspect
+ end
+ end
+
context ".mogrify_preview_url" do
it "should works" do
mogrify_preview_url = Qiniu::RS::Image.mogrify_preview_url(@source_image_url, @mogrify_options)
diff --git a/spec/qiniu/rs_spec.rb b/spec/qiniu/rs_spec.rb
index d033d5e..5af44a4 100755
--- a/spec/qiniu/rs_spec.rb
+++ b/spec/qiniu/rs_spec.rb
@@ -164,6 +164,17 @@ module Qiniu
end
end
+ context ".image_exif" do
+ it "should works" do
+ data = Qiniu::RS.get(@test_image_bucket, @test_image_key)
+ data.should_not be_false
+ data.should_not be_empty
+ puts data.inspect
+ result = Qiniu::RS.image_exif(data["url"])
+ puts result.inspect
+ end
+ end
+
context ".image_mogrify_save_as" do
it "should works" do
data = Qiniu::RS.get(@test_image_bucket, @test_image_key)
@@ -175,7 +186,7 @@ module Qiniu
dest_key = "cropped-" + @test_image_key
src_img_url = data["url"]
mogrify_options = {
- :thumbnail => "!120x120r",
+ :thumbnail => "!120x120>",
:gravity => "center",
:crop => "!120x120a0a0",
:quality => 85,