Carrierwave plugin that allows to create images from data uri
Add this line to your application's Gemfile:
gem 'carrierwave-data-uri'
And then execute:
$ bundle
Or install it yourself as:
$ gem install carrierwave-data-uri
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
end
Then a data string can be used as a source for the uploader
user = User.find 123
user.avatar_data_uri = 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
user.save
the data string can be retrieved too
user.avatar_data_uri # => data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==
There will be no error in case of empty or invalid data. There is a loud version available that could be used to raise an error on empty or invalid data:
user = User.find 123
user.avatar_data_uri_loud = '' # will raise `CarrierWave::DataUri::InvalidData` error
Optionally, to customize the file name, specify the #{column}_data_filename
and #{column}_data_mimetype
attributes before the #{column}_data_uri
attribute.
user = User.find 123
user.avatar_data_filename = 'somefile.jpg'
user.avatar_data_mimetype = 'image/jpeg'
user.avatar_data_uri = 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////8AAP///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=='
user.save
- Assigning empty data is not raising an error now. Use loud version(
model.field_data_uri_loud =
) instead.
- Fork it ( https://github.com/[my-github-username]/carrierwave-data-uri/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request