私は流星のアプリケーションを持っています。この中で私はbase64画像を取得します。デジタルオーシャンインスタンスにイメージを保存したいので、pngなどのイメージフォーマットに変換してサーバーに送信し、イメージのURLを取得します。 しかし、私はこれを行う流星パッケージを見つけられませんでした。流星群のアプリケーションでbase64をpngに変換します
どうすればいいのですか?
私は流星のアプリケーションを持っています。この中で私はbase64画像を取得します。デジタルオーシャンインスタンスにイメージを保存したいので、pngなどのイメージフォーマットに変換してサーバーに送信し、イメージのURLを取得します。 しかし、私はこれを行う流星パッケージを見つけられませんでした。流星群のアプリケーションでbase64をpngに変換します
どうすればいいのですか?
私はfs.writeFile
からFile System
を使用して私の問題を解決しました。
これは、クライアント側での私のjavascriptのコードは、私はプラグインからbase64で画像(img
)を持って、私は私の保存ボタンをクリックしたとき、私はこれを行うです:
$("#saveImage").click(function() {
var img = $image.cropper("getDataURL")
preview.setAttribute('src', img);
insertionImage(img);
});
var insertionImage = function(img){
//some things...
Meteor.call('saveTileImage', img);
//some things...
}
そして、サーバ側では、私が持っている:だから
Meteor.methods({
saveTileImage: function(fileData) {
var fs = Npm.require('fs');
var path = process.env.PWD + '/var/uploads/';
base64Data = fileData.replace(/^data:image\/png;base64,/, "");
base64Data += base64Data.replace('+', ' ');
binaryData = new Buffer(base64Data, 'base64').toString('binary');
var imageName = "tileImg_" + currentTileId + ".png";
fs.writeFile(path + imageName, binaryData, "binary", Meteor.bindEnvironment(function (err) {
if (err) {
throw (new Meteor.Error(500, 'Failed to save file.', err));
} else {
insertionTileImage(imageName);
}
}));
}
});
var insertionTileImage = function(fileName){
tiles.update({_id: currentTileId},{$set:{image: "upload/" + fileName}});
}
、流星方法saveTileImage
は、PNGファイルにbase64で画像を変換し、insertionTileImage
サーバーにアップロードします。
BlobUrl、それはあなたのためのより良い選択肢でしょうか?
イメージをサーバーにbase64などで保存してから、イメージをページで表示しているときに、そのイメージのblobUrlを生成します。 URLはその時にのみ使用され、他の人があなたの画像サーバーに過負荷をかけずにさまざまなWebサイトであなたのURLを使用するのを防ぎます...
私は同様の問題に遭遇していました。
は、次のコマンドを実行します。
meteor npm install --save file-api
これは、例えば、サーバー上で次のコードをできるようになります:
import FileAPI from 'file-api';
const { File } = FileAPI;
const getFile = function(name,image){
const i = image.indexOf('base64,');
const buffer = Buffer.from(image.slice(i + 7), 'base64');
const file = new File({buffer: buffer, name, type: 'image/jpeg'});
return file;
}
は、単にあなたが好む任意のファイル名でそれを呼び出し、base64文字列イメージパラメータ
こちらがお役に立てば幸いです。私はこれをテストして、サーバー上で動作します。私はクライアントでそれをテストしていないが、なぜそれがうまくいかないのか分からない。
あなたの答えをありがとうが、私は別の方法で成功しました。私の答えを見てください。 – Adrien
実際、私はbase64でイメージを保存したくありません。私はpngやjpegのような古典的な画像フォーマットでサーバに保存したいと思っています。私はいつも動作するurlを持っていたいと思います。しかし、私はそれをpng形式でサーバーに保存する方法を知らない。 – Adrien