1

私の使命は、ユーザーが自分の写真をアップロードできるようにすることです。サイトは顔と髪を切り取り、e カードに貼り付けます。難しいのは、フラッシュの使用が許可されていないことです =/

そこにajaxまたはjsの顔検出ソリューションがあることは理解していますが、私を悩ませているのは、奇妙な形のパターンをどのように切り取るかです。私が知っている Imagemagick/graphicsmagick は、長方形または正方形のオブジェクトのみをトリミングできます (間違っている場合は修正してください)。im が奇妙な形状をトリミングする機能を備えているまで、これはアイデア全体をほとんど破壊しますか? または、円や多角形をトリミングする他の方法はありますか?

ユーザーがトリミングのために写真にいくつかの線を描画できるようにするためのアイデアがポップアップし、サイトが線をベクトルに変換して線の周りを色で塗りつぶし、色が im によって透明に変換されます...しかし、その後これを開始する方法がわかりません..おそらく現時点では不可能です(?)。

私はアイデアが不足しています:(

4

1 に答える 1

1

私は作物をうまく作成しました:)完璧ではありませんが、androidまたはiphone/ipadで動作するはずです。

基本的に、私はjsプロットツールを使用して座標をマークし、それらすべての座標をどこかに保存しました。

次に、imagemagickの座標を使用しますが、IMは実際には奇妙な形状をトリミングしませんが、「マスク」を使用してステンシルを組み合わせることで写真のbgを変換できるようです(座標を使用して線を描画し、bgを塗りつぶします)。 #000000カラー)と元の写真。

結果は私たちが探している作物になるはずです:)ちょっとエッジの効いたので、今度はフェザリングを追加しました。これはすべてimagemagickを使用しています。

IMで「パス」を使用したので、必要なのは曲線だけです。これは、実際にはスムーズなトリミングを提供しません。誰かが「三次曲線」を使用することを提案しましたが、座標ごとにいくつかのパラメーターが必要なため、追加のコーディングが必要になる場合があります。

このコマンドはステンシルを作成します(長い数字のセットが座標です):

convert -size 450x125 xc:black -fill white -stroke black -draw "path 'M +60+9 +94+18 +96+19 +84+27 +92+36 +97+43 +103+56 +102+58 +109+66 +109+74 +101+68 +98+76 +98+84 +95+88 +98+91 +106+95 +110+99 +111+103 +99+106 +89+108 +73+112 +56+109 +40+109 +26+103 +37+97 +46+91 +48+88 +39+80 +36+71 +32+78 +27+72 +30+61 +35+55 +42+41 +30+37 +40+24 +51+14 +156+9 +197+6 +236+8 +269+16 +265+36 +248+50 +222+52 +213+35 +198+24 +174+18 +155+13 +60+9'" stencil.gif

次に、ステンシルを元の画像と組み合わせます(これにより、透明な「切り抜き」が表示されます)。

convert original.jpg stencil.gif -alpha off -compose CopyOpacity -composite combined.png

最後に、エッジをフェザーアウトします。

convert combined.png -alpha set -virtual-pixel transparent -channel A -blur 0x0.7 -level 50,100% +channel -background none -flatten final.png

これが現在の仕組みです:https ://lh6.googleusercontent.com/_2lSoW37_zqo/TYCD65Vu4zI/AAAAAAAAEcc/vjlCPM54FTI/s800/theoryinpractice.jpg 

それはそれについてです、私はこれが誰かを助けることを願っています。

于 2011-03-16T17:31:16.460 に答える