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