0

さて、私の以前の質問で、使用しているブラウザが何らかの理由で toDataURL() をサポートしていないことがわかりました。todataur-png-jsなどの回避策を使用しようとしましたが、失敗するため、役に立ちませんでした。キャンバスのピクセル データに基づいて PHP で画像を作成し、それを画像として保存できる可能性があることに気付きました。ただし、キャンバスの経験はあまりなく、このようなことを行う方法を正確に知りません. 何か案は?正しい方向へのナッジでも十分です。=)

4

2 に答える 2

2

ピクセルの配列が既にある場合は、GD ライブラリの関数imagecreatetruecolor()imagesetpixel()関数を使用してこれを実現できます。

// Assume $pixelArray is a 2-dimensional array of colors for the pixels

// Grab the dimensions of the pixel array
$width = count($pixelArray, 0);
$height = count($pixelArray);

// Create the image resource
$img = imagecreatetruecolor($width, $height);

// Set each pixel to its corresponding color stored in $pixelArray
for ($y = 0; $y < $height; ++$y) {
    for ($x = 0; $x < $width; ++$x) {
        imagesetpixel($img, $x, $y, $pixelArray[$y][$x]);
    }
}

// Dump the image to the browser
header('Content-Type: image/png');
imagepng($img);

// Clean up after ourselves
imagedestroy($img);

イメージをブラウザーにダンプする代わりにディスクに保存する場合は、 への呼び出しを省略してheader()、パスをimagepng()2 番目のパラメーターとして渡します。

imagepng($img, '/some/path/to/your/desired/image.png');
于 2012-04-23T17:19:57.977 に答える
1

Netfront Browser でキャンバスのピクセル データを取得できるかどうかは不明です。

サンプル ページから、ボタン ハンドラー コードを変更します。

var cv=document.getElementsByTagName('canvas')[0];document.documentElement.style.background='url('+cv.toDataURL()+')';

これに:

var cv=document.getElementsByTagName('canvas')[0];alert(cv.toDataURL());

alert()ポップアップにピクセルデータが表示されますか?

その場合、このブラウザでは背景画像にデータ URL を使用できないようです。そうでない場合は、キャンバスがgetImageData()ボンネットの下でサポートされていないようです。

于 2012-04-23T17:24:54.987 に答える