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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1124
aoファイル詰め込み(?)7解決


ao

リンク

2006/11/24(Fri) 16:25:29|NO.3728

ちょっとしたツールを作りたいと思いまして。
画像ビューアなんですが、
ひとつのファイルに画像ファイル(形式問わず)とコメント、
ほかの画像へのリンクとかを詰め込みたいのです。
いろいろ試してはみるのですが…
よければ、どなたかアドバイスいただけないでしょうか?
HSP3.0です。
よければ標準命令で。



この記事に返信する


Drip

リンク

2006/11/25(Sat) 03:00:35|NO.3740

Dripです。

 aoさん、こんにちは。
画像データ等のファイルをまとめ、様々なデータを付加したい、ということですが、
sdimで付加する情報の長さと画像サイズぶんのメモリを確保し、
情報を書き込み、保存するだけで簡単に実現できます。
ちょっと説明だけでは理解し難いので
以下に画像ファイルに情報を付加するサンプルを示します。

screen 0,400,200 button "読み込み",*load:pos 64,0:button "書き出し",*save:pos 300,4:mes "画像コメント" pos 0, sdim msg,256 mesbox msg,400,ginfo_winy-ginfo_cy,5,255 stop *load //普通の画像形式とコメントが拡張された画像形式を読み込めるようにする。 dialog "gif;*.jpg;*.bmp;*.xgif;*.xjpg;*.xbmp",16 if stat=0:stop path=refstr:exist path:buf=strsize screen 2 switch getpath(path,2+16) //読み込み開始 case ".gif":case ".jpg":case ".bmp":picload path //普通の画像形式なら普通に読み込み sdim img,buf:bload path,img,buf //書き出しようの画像データを読み込んでおく swbreak case ".xgif":case ".xjpg":case ".xbmp" //コメントが拡張された画像形式 sdim p,2:bload path,p,1 //まずコメントの長さを取得 bload path,msg,peek(p,0),1 //コメントの長さ分コメントを読み込む buf-=peek(p,0)-1 //ファイルサイズからコメントサイズ+1を引いて画像データのサイズにする。 sdim img,buf:bload path,img,buf,peek(p,0)+1 //画像データ読み込み memfile img //メモリを画像データとして扱う。 picload "MEM:img"+getpath(path,2+16) //メモリから画像読み込み swbreak default:swbreak swend gsel 0 objprm 2,msg //コメントをメッセージボックスに表示する。 stop *save //書き込み処理開始 if strlen(msg)>0:{ //コメントがあればコメント拡張画像形式にする。 k=getpath(path,2+16):if strlen(k)<5:k=".x"+strmid(k,1,3) //拡張子の処理 dialog strmid(k,1,4),17 if stat=0:stop sdim file,buf+strlen(msg)+1 //メモリ確保 poke file,0,strlen(msg) //コメントの長さを書き込む memcpy file,msg,strlen(msg),1,0 //コメントを書き込む memcpy file,img,buf,strlen(msg)+1,0 //画像データを書き込む bsave getpath(refstr,1)+k,file //データを書き込んだメモリをセーブ }else{ //コメントがなければ普通の画像形式にする。 k=getpath(path,2+16):if strlen(k)>4:k="."+strmid(k,2,3) //拡張子の処理 dialog strmid(k,1,3),17 if stat=0:stop bsave getpath(refstr,1)+k,img //画像メモリをセーブ。 } stop
 情報を付加した画像は拡張子にxが追加された特殊な画像データになり、
「読み込み」からコメントと画像を読み込むことが可能です。
このサンプルは1つのファイルにコメントを付加するだけですが、
配列変数やrepeat命令を使えば、複数のファイルをまとめることができます。
サンプルの*load、*saveの部分を入念に理解してみてください。
poke,peek,memcpyなどのメモリ操作関連の命令や関数を中心に理解していけば、
そんなに難しくないはずです。がんばってください。



Drip

リンク

2006/11/25(Sat) 03:16:42|NO.3741

 ところで、chokkoさんの掲示板に全く同じ記事が書かれていましたが、
マルチポストは一般的にマナー違反とされています。
「誰でもいいから一刻も早くアドバイスしてもらいたい!」
という気持ちはとてもよくわかりますが、質問場所は良い回答が得られそうな場所一ヶ所に決めて
書き込むようにしたほうが良いです。
 そこでいくら待っても返信が返ってこず、どうしても他の方の知識を借りたいときは、
質問文をコピペせずに新しく文章を書き下ろし、他の場所で質問してみましょう。



七次元

リンク

2006/11/25(Sat) 03:22:01|NO.3742

あと同じ内容を3連投しないように気をつけて(苦笑



Drip

リンク

2006/11/25(Sat) 03:31:28|NO.3743

Dripです。

七次元さん>

 確かにそれは誰もがつっこみたくなる問題だと思います。
しかし、投稿後に変なエラーのような表示がされるようでは、ほとんどの人は
「投稿に失敗した!」と思うでしょう。せっかちな人は書き込まれたかの確認も忘れ
再投稿してしまうこともあります。(エラー表示→ブラウザで戻る→送信ボタン)
 中には単に目立ちたいから重複投稿する人もいるかもしれませんが、
エラー表示に起因するトラブルがメインだと思います。

 この辺はおにたまさんに、投稿後にエラーのような表示がされ
重複投稿などの問題が発生し、不快な思いをしている旨を丁寧に伝えるべきだと思います。



七次元

リンク

2006/11/25(Sat) 03:47:32|NO.3744

確かにエラーが出ると失敗したと思ってしまいますね
>不快な思いをしている旨を丁寧に伝えるべきだと思います。
心配しなくても丁寧に伝えますよ(苦笑
それでおにたま氏はどういうときにこの掲示板を見てるんでしょうかね?



hamach

リンク

2006/11/25(Sat) 22:58:41|NO.3764

hamach です。

> それでおにたま氏はどういうときにこの掲示板を見てるんでしょうかね?
どうやら見てくれたようですね。

私も最初は書き込まれたか心配でした。



ao

リンク

2006/11/28(Tue) 00:23:37|NO.3809

すいません、いやー、お恥ずかしいです。
あまりPCを触る機会がないもので…ずいぶんと遅い返事となりましたが。
Dripさん、ありがとうございます。
あと、ほかの皆様、気を付けます。
色々とありがとうございます。



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