web-dev-qa-db-ja.com

コマンドラインでbase64を使用して画像文字列をデコードする方法は?

画像があると言うimage1.jpg
base64ツールを使用してエンコードできます。

myImgStr=$(base64 image1.jpg)

次のコマンドを使用してデコードしようとしました。

base64 -i -d $myImgStr > image2.jpg

または

echo -n $myImgStr | base64 -d -i > image2.jpg

しかし、どちらの場合でも、次のエラーが表示されます。

base64: extra operand ‘/9j/4AAQSkZJRgABAQAAAQABAAD/7QCEUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAGgcAmcAFHNH’ Try 'base64 --help' for more information.
ご協力いただければ幸いです。

5
Navaro

ユーティリティ base64 は、名前が引数として指定されているファイルまたは標準入力から入力を読み取ります。コマンドライン引数から入力を読み取ることはありません。あなたの場合、変数に格納されている文字列をデコードするには、base64の標準入力に文字列を指定する必要があります。

Bashを使用している場合、here-stringを使用できます。

base64 -d <<< "$myImgStr" > image2.jpg

シェルがhere-stringsを受け入れない場合、いつでも使用できます。

echo "$myImgStr" | base64 -d > image2.jpg

"$myImgStr"を囲む二重引用符に注意してください。そうしない正当な理由がない限り、変数の展開は常に二重引用符で囲む必要があります。)

12
AlexP

Linuxコマンドラインを使用してSalesforce Quote PDFファイルをエクスポートし、Base64からPDFに戻す変換する方法

  1. Dataloaderを使用して、すべてのフィールドとデータを含むQuoteDocumentオブジェクトをエクスポートします

dataloader1

dataloader2

dataloader

2.テキストエディターのTextPadを使用して、csvファイルを開きます。メモ帳は大きなサイズのデータ​​を処理できず、切り捨てられるため、メモ帳は使用しないでください。 3. TextPadは、ファイルを開いたり、データをコピー/貼り付けしたりするときに、大きなデータを処理でき、改行文字などを尊重します。 4.データの特定の行に移動し、PDF Base64エンコードデータを含むセルフィールド文字列を選択してコピーします。必ず最後まで選択してください。ただし、その後のフィールドは含めないでください。

textpad1

  1. それ以降のフィールドを含めないでください。
  2. 文字列を選択しますが、引用符「」記号は含めません。

textpad2

  1. 文字列をコピーして、新しいTextPadウィンドウに貼り付けます。
  2. 新しいTextPadをdocument1.txtなどのファイルに保存します
  3. Docuemnt1.txtファイルをLinuxコンピューターにコピーします(これにはDropboxを使用できます)。
  4. Linuxコマンドラインターミナルウィンドウを開く
  5. Base64デコードコマンド(base64はcoreutilsパッケージの一部)を実行します。$ base64 --decode〜/ Dropbox/linux_stuff/Document1.txt>〜/ Dropbox/linux_stuff/decoded1.pdf
  6. このコマンドは、Document1.txtファイルを読み取り、デコードされたPDFファイルをdecode1.pdfに出力します。
  7. これで、decoded1.pdfファイルをPDFファイルとして開くことができます。
  8. Decode1.pdfファイルの名前は任意に変更できます。つまり、元のSalesforce Quoteオブジェクトレコードに添付されていた元のファイル名に戻すことができます。

linux_command_line

0
Martin Hurst