ここで、非常に難しい質問を受けました。データベースに blob-Picture が保存されています。今、それを 9 つのパーツ (三目並べのグリッドなど) に分割し、1 つを右下に非表示にしたいと考えています。これらの 8 つのパーツをランダムな順序で表示したいので、それらを動かしてパズルを解くことができます (移動は JavaScript で解決できます)。
どうすればphp機能を作ることができますか? そのための既存の機能はありますか?
助けてくれてありがとう;)
ここで、非常に難しい質問を受けました。データベースに blob-Picture が保存されています。今、それを 9 つのパーツ (三目並べのグリッドなど) に分割し、1 つを右下に非表示にしたいと考えています。これらの 8 つのパーツをランダムな順序で表示したいので、それらを動かしてパズルを解くことができます (移動は JavaScript で解決できます)。
どうすればphp機能を作ることができますか? そのための既存の機能はありますか?
助けてくれてありがとう;)
GDライブラリを利用できます。画像の一部をコピーできる関数imagecopy()
http://www.php.net/manual/en/function.imagecopy.phpがあります。たとえば、90x90ピクセルの画像がある場合は、最初の正方形になるように0,0,30,30で呼び出す必要があります。その部分を別々の画像として保存するか、ブラウザに直接配置すると、適切な方法でそれらを操作するだけで済みます[ここではパズルソルバー]。
これはJavaScriptとPHPの組み合わせであり、PHPで画像を分割できることは難しいことではありませんが、JavaScriptがファイルの順序を認識できるように、ファイルを整理する必要があることを覚えておく必要があります。完全なパズルになります。
画像自体を分割する代わりに、数学的方法を使用して画像のスライスを取得する方がよいでしょう。
1 2 3
-------------------
1 | | | |
-------------------
2 | | | |
-------------------
3 | | | |
-------------------
画像は300x300ピクセルなので、幅と高さを必要な画像の量で2で割る必要があります。たとえば、次のようになります。
$ImagesRequired = 9;
$GlobalImageWidth = 900;
$GlobalImageHeight = 900;
$EachImageWidth = $GlobalImageWidth / ($ImagesRequired / 2);
$EachImageHeight = $GlobalImageHeight / ($ImagesRequired / 2);
両方の値は66〜ピクセルである必要があります。次に、トリミングを使用して画像のチャンクを取得して画像内を移動します。
for($x=0;$x<=$GlobalImageWidth;$x = $x+=$EachImageWidth)
{
}
上のグラフを見ると、次の寸法を累積するように、増分順に画像を撮影します。
これで、各画像をトリミングする必要のあるサイズを計算したので、GDまたはImagikライブラリを使用して画像をスライスし、キャッシュに保存できる画像の配列を作成します。
上記は100%正しくない可能性があります。これは、数学や画像操作の専門家ではないためですが、Imagikで行われたすばらしい作業と画像操作を確認するには、次のリンクを参照してください。あなたを刺激します。