プログラミング初心者です。
いまポストカード作成システムを大学の課題で作っています。
環境はWindowsXP FLASH8Proです。
最後の保存するところで詰まっています。
現時点でできているところまでHPにアップしたので載せます。
http://www.geocities.co.jp/ysmnh028/otameshi.html
URLより画像を読み込み最後に保存をしたくていろいろ調べていて、PHPと連携させてブラウザ上に新しいページで画像を生成し、それを右クリック⇒保存という形で保存できる事はわかりました。
SAVEボタンのASは以下のとおりです。
on (press) {
// 保存用Bitmapを生成
var bmpSnap = new flash.display.BitmapData(300, 444, false);
// 保存したいMovieClipをBitmapに描画する
bmpSnap.draw(_root.photo_mc);
// BitmapデータをRGB配列にする
var img_data = new Array();
for (var x = 0; x<bmpSnap.width; x++) {
for (var y = 0; y<bmpSnap.height; y++) {
var col = bmpSnap.getPixel(x, y);
img_data.push(("000000"+col.toString(16)).substr(-6, 6));
}
}
// データを送信
System.useCodepage = true;
myLoader = new LoadVars();
myLoader.img_width = bmpSnap.width;
// 画像幅
myLoader.img_height = bmpSnap.height;
// 画像高さ
myLoader.img_data = img_data.join("");
// 画像データ
myLoader.send("snapshot.php", "_blank", "POST");
}
PHP側は
<?php
// 送信データを取得
$img_data = $_POST['img_data'];
$width = $_POST['img_width'];
$height = $_POST['img_height'];
$type = $_POST['img_type'];
// IMAGE生成
$source_img = imagecreatetruecolor ($width, $height);
// 背景色を生成
$bg_col = imagecolorallocate($source_img, 0xFF, 0xFF, 0xFF);
$border_col = imagecolorallocate($source_img, 0x00, 0x00, 0x00);
// イメージを描画
$p = 0;
for ($x = 0; $x < $width ; $x++) {
for ($y = 0; $y < $height ; $y++) {
$rgb = hexdec(substr($img_data, $p, 6)); $p+=6;
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$col = imagecolorallocate($source_img, $r, $g, $b);
imagesetpixel($source_img, $x, $y, $col);
}
}
header("Content-Type: image/jpeg");
imagejpeg($source_img);
exit;
// JPEG出力
touch("test.jpg"); // まずは空ファイル生成
imagejpeg($source_img, "test.jpg"); // 画像を保存
header("Content-Type: image/jpeg");
readfile('test.jpg');
exit;
?>
以上です。
ローカルでためしたところ画像は表示されず、かわりに代替画像としてアドレスが表示されます。
考えられる原因はなんでしょうか??
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
URLが見れなかったのでハッキリとは解からないのですが・・・
ASの方はBitmap dataにして送ることをしたことが無いのでなんとも言えないです。
結構簡単に出来るんですね。
PHP側ですが、POSTデータを送る時に画像をimg_dataと言うのを渡していると思うのですが、これが勝手に文字コード変換されているとかではないでしょうか。
mbstring.encoding_translation = On
mbstring.http_input = UTF-8
とかで設定していた場合、文字コードを別の物として認識してバイナリデータを壊していそうです。
$_POSTではなく、fopen("php://stdin/","r");とかで取った方がいいかも知れません。
とりあえずバイナリエディタを使ったり、パケットモニタとか使って、処理中にbreakpointを決めてみたりして、どこで問題が発生するのかを見極めるといいんじゃないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでimageファイルをアップロ...
-
GDを使って画像の背景を透過さ...
-
ビットマップ画像を読み込むプ...
-
PHPでHTMLソースの<img src="★"...
-
★PHP?★画像を縦横比を変えずに...
-
C# Excelファイルへの画像挿入。
-
透過PNGが透過されない!!
-
VBSの「MsgBox」について
-
HTMLで画像のスライドショーを...
-
ListViewコントロールでサムネ...
-
libpng 24bpp rawをPNGに変換す...
-
phpのImageColorAllocate関数に...
-
Ajaxで画像表示
-
「imagejpeg」(GD)で作成した...
-
どの画像がクリックされたかフ...
-
拡張子php画像をjpg画像等に変...
-
フォントの色を変えるには?
-
phpからエクセルのマクロを実行...
-
PHPのif文でその処理を途中で抜...
-
onedrive にexcelファイルをア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
透過PNGが透過されない!!
-
拡張子php画像をjpg画像等に変...
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
OpenGLで描いて画像ファイル出力
-
move_uploaded_fileのエラーについ
-
PythonのTkinter詳しい方へ。画...
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
C#とJavaで、MP3タグの画像を表...
-
手作業で埋め込んだ、UserForm1...
-
画像リストを作りたい
-
【PHP】サーバー上で TIFFをJPE...
-
BLOBデーターの画像の表示方法...
-
DBに格納された画像データを縮...
-
VBAでJPGサイズ変更
-
どの画像がクリックされたかフ...
-
PHPで吐き出した画像にリンクを...
-
PHP MySQLに画像を直接保存
おすすめ情報