1 js
1.1 图片的url转为base64编码
实现原理:
使用canvas.toDataURL()方法。需要解决图片跨域问题 image.crossOrigin = ‘’。
var img_url = 'https://......X.jpg'
var image = new Image()
image.crossOrigin = '' // 解决跨域问题
image.src = img_url
image.onload = function () {
let canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
let context = canvas.getContext('2d')
// image.width、image.height调用时传入具体像素值,控制大小 ,不传则默认图像大小
context.drawImage(image, 0, 0, image.width, image.height)
let dataURL = canvas.toDataURL() // 得到图片的base64编码数据
console.log(dataURL)
}
参考:
https://blog.csdn.net/weixin_40758850/article/details/102524683
链接
2 ruby
2.1 根据远程图片jpg/png的url,转换为base64图片格式
使用open-uri库,获取一个HTTP/FTP地址的内容。
open-uri库是ruby的标准附加库中所带的,路径是:lib/oepn-uri.rb。引用了该附加库后,就可以像打开普通文件那样打开一个http/ftp的uri的资源。
require 'open-uri'
def image_to_base64
img_url = 'https://......X.jpg'
tempfile = open(img_url){|f| f.read}
logo_img = Base64.encode64(tempfile)
return logo_img
end
2.2 图片的base64格式转换成jpg/png格式
def base64_to_image
#注意: 要去掉base64_img 的base64的开头部分"data:image/png;base64,"
img_base64 = "data:img/jpg;base64,iVBORw0KGgoAAAAN..."
#img_base64 = img_base64["data:img/jpg;base64,".length..-1]
img_base64 = img_base64.split(/[;:,]/)[3]
tempfile = Tempfile.new("1.jpg")
tempfile.binmode
tempfile.write(Base64.decode64(img_base64))
path = tempfile.path #临时文件的路径
tempfile.close
return path
end
参考:
https://www.cnblogs.com/coderlee/archive/2008/04/18/1159454.html
https://ruby-china.org/topics/31976