0

Linux (c++ / Qt4.5.x) サーバー デーモンから Three20 フレームワークを使用している iPhone アプリケーションに png 画像を提供しようとしています。具体的には TTThumbsViewController ビューを使用したいと考えています。

リクエストを「GET」したときにデーモンに返される次の画像を使用して、Webブラウザで画像を表示することができました。

QTextStream os(socket);
os.setAutoDetectUnicode(true);
QByteArray base64 = array.toBase64();

os << "HTTP/1.1 200 Ok\r\n"
  "Host: software.local\r\n"
  "\r\n"
  "<html>"
  "<body>"
  "<img src=\"data:image/png;base64," << base64 << "\" />"
  "</body>";

ここで、「配列」は png の画像データです。私は次のようなものを入力しています:

  http://software.local:8080/test.png

ブラウザに入力して画像を表示します。

写真ソースクラスで同じURLを次のように指定しようとすると

[MockPhoto alloc]
 initWithURL:@"http://software.local:8080/test.png"
 smallURL:@"http://software.local:8080/test.png"
 size:CGSizeMake(480, 320)] autorelease],
...

何も返されないか、表示されませんか?

私の質問は本当に - たとえば test.png を Linux PC の適切なディレクトリに置き、Web サーバー (apache) を起動した場合、" http://software.local/test.pngを参照すると、上のような画像が表示されます。 、しかし、画像はhttpヘッダーに埋め込まれていませんでしたか?私は本当にこの動作を得るためにヘッダーがどうあるべきかを理解できません.上記のiPhoneコードでURLを設定すると、Apacheサーバーからpngがロードされます.それは TTThumbsViewController にあります。

ご覧のとおり、私は基本的な http の経験しかありません。

4

2 に答える 2

2

スクリプトは画像を提供していません。ブラウザによって解釈される html を提供しています。three20 のフレームワークを使用したことはありませんが、png がデータとして返され、html ドキュメントに埋め込まれていないことが期待されているに違いありません。テストしているブラウザは生の画像データだけでなく html も理解するので、画像は問題なく表示されます。

これを機能させるには、コンテンツ タイプ ヘッダーを「image/png」に設定してから、画像データを送信する必要があります。QTでこれを行う方法はわかりませんが、申し訳ありません:(

サム

于 2009-11-23T14:47:34.917 に答える
0

私はこれをPHPで行っていました。これらのヘッダーを QT エコー文字列に変換します。

header('Last-Modified: ' . date('r'));
header('Accept-Ranges: bytes');
header('Content-Length: ' . $imageSize);
header('Content-Type: image/png');
print(file_get_contents($file));

base64が必要かどうかはよくわかりません

于 2010-02-18T05:28:52.413 に答える