uniappでbase64を画像形式に変換する

ユニアプリで画像をbase64に変換する


実現方法

Base64から画像形式(js)へ

JavaScript で atob() 関数と btoa() 関数を使用して、Base64 をイメージに変換できます。

まず、atob() 関数を使用して、Base64 でエンコードされた文字列をバイナリ データに変換します。次に、バイナリ データを Blob オブジェクトに変換し、URL オブジェクトを作成します。最後に、URL オブジェクトを画像の src 属性に割り当てることで画像が表示されます。

サンプルコードは次のとおりです。

// 假设您已经有一个 Base64 编码的字符串
const base64String = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..."

// 将 Base64 编码的字符串转换为二进制数据
const binaryString = atob(base64String.split(',')[1])

// 将二进制数据转换为 Blob 对象
const blob = new Blob([binaryString], {
    
     type: 'image/png' })

// 创建 URL 对象并将其分配给图像的 src 属性
const image = new Image()
image.src = URL.createObjectURL(blob)

// 将图像添加到文档中
document.body.appendChild(image)

data:image/png;base64,atob() 関数が文字列を正しくデコードするには、base64String から を削除する必要があることに注意してください。

Base64 でエンコードされた文字列をファイルに変換し、ローカル ファイル システムに保存する必要がある場合は、FileWriter や FileSystem API などのファイル システム API を使用します。


Base64から画像フォーマットへ(uniapp)

Uniapp では、uni.base64ToArrayBuffer() API を使用して、base64 文字列を ArrayBuffer 形式に変換し、それを Blob オブジェクトに変換できます。次に、URL.createObjectURL() メソッドを使用して BLOB URL を作成し、最終的にページに表示できます。

コード例は次のとおりです。

// 将base64字符串转换为ArrayBuffer格式
const arrayBuffer = uni.base64ToArrayBuffer(base64Str);

// 将ArrayBuffer转换为Blob对象
const blob = new Blob([arrayBuffer], {
    
     type: 'image/png' });

// 创建Blob URL
const imgUrl = URL.createObjectURL(blob);

// 在页面上显示图片
this.imgUrl = imgUrl;

ここでのbase64Strは変換したいbase64文字列であり、実際の状況に応じて型を変更できます。最終的な imgUrl は生成された Blob URL であり、これを img タグの src 属性にバインドして画像を表示できます。

Base64から画像形式へ(WeChat独自の方式)

//把base64转换成图片
getBase64ImageUrl(base64Url) {
    
    
	/// 获取到base64Data
	var base64Data = base64Url;
	/// 通过微信小程序自带方法将base64转为二进制去除特殊符号,再转回base64
	base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data));
	/// 拼接请求头,data格式可以为image/png或者image/jpeg等,看需求
	const base64ImgUrl = "data:image/png;base64," + base64Data;
	/// 得到的base64ImgUrl直接给图片:src使用即可
	return base64ImgUrl;
},

上記のコードは参照のみを目的としており、特定の実装の詳細とスタイルは必要に応じて調整できます。


ソースコードの入手方法:

完全なソースコードが必要な友達は、「いいね」+お気に入り+コメントをして、プライベートメッセージを送っていただければ幸いです~

メンバー学習グループ: [1 対 1 の Q&A]

チュートリアルでわからないことがあれば、学習メンバー アシスタントを追加して相談できます (WeChat: mifankeji77)

おすすめ

転載: blog.csdn.net/weixin_42317757/article/details/130966161