記事
Megumi Kakechi · 2021年3月25日 2m read

Base64文字列でクラスに画像を保存・復元する方法

これは InterSystems FAQ サイト の記事です。
 

以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。


【使用クラス】

Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}


【取込み時】

  set x=##class(User.test).%New() // ここに保存

  // 画像準備
  set file=##class(%File).%New("c:\temp\Mii.png")
  do file.Open("RUK\BIN\")
  for {
       if file.AtEnd=1 quit
       // 画像を1024 byteずつ Base64形式に変換(エンコード)
       set cnt=file.Read(1024)
       set b64=$system.Encryption.Base64Encode(cnt// b64: 1402byte
       do x.pics.Write(b64)
  }
  do x.%Save()
  do file.Close()


【上記クラスに保存したBase64から画像復元】

 // 復元先ファイル
 set file2=##class(%FileBinaryStream).%New()
 do file2.LinkToFile("C:\temp\xx.png")

 // User.test クラス保存したデータをオープン
 set x=##class(User.test).%OpenId(1)

 for {
   if x.pics.AtEnd=1 quit
   set b64=x.pics.Read(1402)
   set cnt=$system.Encryption.Base64Decode(b64)
   do file2.Write(cnt)
 }
 do file2.SaveStream()

 

00
0 0 0 12
Log in or sign up to continue