HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0909
教えて君画像を変数に入れてbase64でエンコードしたいのですがうまくいきません3解決


教えて君

リンク

2012/9/9(Sun) 00:56:37|NO.49246

画像を変数に入れてbase64でエンコードしたいのですがうまくいきません。
下記のようなコードを書いたのですが8文字で区切れてしまいます。
どのようにしたらきちんと変数に入れられるでしょうか?
HSPとデスクトップアプリは初めてなので難しい言葉はわからないです。
http://pic-love.net/5c837e4832b0db08456e9df191b1dc44



#include "hspinet.as" bload "test.jpg",load b64encode res,load mes "BASE64文字列:"+res



再変換してもうまくいってないようです。


#include "hspinet.as" bload "test.jpg",load b64encode res,load mes "BASE64文字列:"+res sdim bres,5120000 b64decode bres,res mes "再変換した文字列:"+bres



よろしくお願いします。



この記事に返信する


774

リンク

2012/9/9(Sun) 01:49:04|NO.49247

>p3の値を省略またはマイナス値にした場合は、p2に含まれるデータを
>"文字列として"自動的にサイズが決定されます。
とb64encodeの説明にはあります。

この場合のp2=loadに0x00が含まれる為、
そこで文字列としては終わりだと見なされているのでは無いでしょうか?
bload後のstrsizeにデータサイズは格納されていますので
それをそのままb64encodeの第3引数とすればできそうです。

また事前に文字列型変数として定義されていない場合、bloadによる変数領域自動拡張は行われない様です。

#include "hspinet.as" sdim res, $10000 : sdim load, $10000 bload "test.jpg", load : len = strsize b64encode res, load, len mes "BASE64文字列:"+res
で、変数に格納されるのではないかと思います。
再変換後のbresはバイナリデータの筈ですので、文字列としてはマトモに表示できないと思います。



kanahiron

リンク

2012/9/9(Sun) 02:10:48|NO.49248

ただ単に画像ファイルの読み込みのメモリを確保していないので、
8文字しか表示されなかったのでしょう


#include "hspinet.as" filename = "1.jpg" exist filename filesize = strsize if filesize = -1:dialog "ファイルが存在しません":end sdim load,filesize bload "1.jpg",load b64encode res,load,filesize mes "BASE64文字列:"+res sdim bres,filesize b64decode bres,res dialog "エンコード完了" cls mes "再変換した文字列:"+bres memfile bres screen 1 picload "MEM: bres.jpg" stop




教えて君

リンク

2012/9/9(Sun) 03:01:17|NO.49249

>>774さん>>kanahironさん
わざわざソースまで書いていただきありがとうございます。

>bloadによる変数領域自動拡張は行われない様です。
noteselなどは普通にできたのでbloadもサイズ指定などいらないと思っていました。

無事解決できましたので締めさせてもらいます。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.