プログラミング初心者です。
いまポストカード作成システムを大学の課題で作っています。
環境は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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
C# Excelファイルへの画像挿入。
-
実行ファイル(exe)に画像ファ...
-
PHP MySQLに画像を直接保存
-
VBAでJPGサイズ変更
-
PythonのTkinter詳しい方へ。画...
-
phpで画像がどうしても文字化け...
-
ウィンドウサイズを取得して、p...
-
携帯電話から画像ファイルをア...
-
OpenGLで描いて画像ファイル出力
-
Web画像コピー不可にする方法
-
imageフォルダに、画像をリサイ...
-
GDを使って画像の背景を透過さ...
-
MYSQLから、画像表示するには
-
【JAVA】画像のサイズを大きく...
-
アップロード画像数でCSSを分け...
-
10進BASICでの画像回転
-
php,mysqlにて画像パス保存/表...
-
PHP+PostgreSQLを使ってPDFファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
VBAでJPGサイズ変更
-
Illustratorで文字と画像を流し...
-
VBAのコードを教えてください
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
GDI+を使ったビット数とDPIの扱い
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
★PHP?★画像を縦横比を変えずに...
-
ビットマップ画像を読み込むプ...
-
phpで画像がどうしても文字化け...
-
PHPで吐き出した画像にリンクを...
-
phpMyAdminに画像を保存できない
-
OpenGLで描いて画像ファイル出力
-
手作業で埋め込んだ、UserForm1...
おすすめ情報