###実現したいこと
下記のようなリピートされる背景画像の最小単位を切り出したいのですが、どうしても時間がかかってしまいます。
今は目視での確認をしています。
また切り出す形に関しては回転のない、四角形を想定しています。
目視よりも何か早く最小単位を見つけられる方法がありますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
無いとは思いますが・・・万が一photshop等でbackground-image
に指定する画像を作成するときの話しという話しであれば
(以下操作に関してはphotoshopで説明します)
- 最初に何処か1点基準となる場所を決めます、目視でやるので画像の中の特徴的な箇所が良いと思います。
- 決めた基準点に縦横にガイドラインを設定します。
- 基準点から縦方向に見て同じ点が出る箇所に横のガイドラインを追加
- 同様に横方向に見て同じ点が出る箇所に縦のガイドラインを追加
- ガイドラインで正方形ができていると思うのでその部分を切り抜いて完了です。
##ただこの回答プログラムとまーったく関係ないですね。
もしこの回答で合っているようならteratailで質問すべき内容とは思えませんので、一度「teratailとは?」ここを見てみることをおすすめします
投稿2016/05/25 15:21
退会済みユーザー
総合スコア0
0
ベストアンサー
HTMLとCSSだけでやろうとしていますか?
ピクセル単位で色を取得して、繰り返し文で複雑にプログラム組む必要があると思うんですが、JSはわかりますか?
すみませんが私はPHPはわからないのでお役に立てませんが、JSであればこちらのページの「画素値の取得と変更」というところが参考になるんじゃないかと思います。
試してはいませんが、アルゴリズムとしてはこんな感じになると思います。
確認はできてないので、あくまで参考程度に。
- まず上から1px目の横方向の規則的な並びと最小単位を調べて、color[][]に入れる。。
int color[][] = new int[最小単位(px)][4]; // rgbaなので color = {{r, g, b, a}, {r, g, b, a}, ...};となる for(int i = 0; i < color.length; i ++){ color[i][0] = 左からi(px)番目の色(R)を取得; color[i][1] = 左からi(px)番目の色(G)を取得; color[i][2] = 左からi(px)番目の色(B)を取得; color[i][3] = 左からi(px)番目の色(A)を取得; }
- 上から2px目の0~color.length番目までの色をindex[][]に入れる(上のコードのaをbに変えるだけ)。
- color[][]とindex[][]が全て同じ 又は 色の差が許容範囲かどうか調べる。
- 1の方法を改良して、縦方向でも規則的な並びと最小単位を調べる。
- もしリピートが見つからなければcolor[]のlengthを2倍、3倍にして4.を繰り返す。
最終的に、リピートする画像の最小単位はWidth = color.length, Height = 4.の結果
となります。
投稿2016/05/25 13:51
総合スコア476
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。