GIMPを使用して、色を「消去」できますか?


9

現在iOSアプリケーションに取り組んでおり、標準のアラートダイアログウィンドウをリバースエンジニアリングしようとしています。私はそれが使用している背景のアルファ値が、黒一色のビューと白一色のビューに対するカラーサンプリングによって何であるかを把握することができました。

この情報があれば、GIMPを使用して背景色を「消去」するだけで、元のブレンドされていない警告の背景だけが残るようにできますか?

実行中のアプリのスクリーンショットとして、画像形式のアラートビューしかありません。

回答:


8

はい、可能です。例としてWikimedia Commonsed_g2sによるCC-By-SA 3.0としてライセンス供与)からのこの画像を使用して、それがどのように行われるかを概説しましょう:

CC-By-SA 3.0としてライセンスされたed_g2sによるPNG透明度のデモ画像

  1. 同じ画像のレイヤーとして黒と白の背景バージョンを開きます([レイヤーとして開く...]を使用するか、両方を開き、一方を他方にコピーして貼り付けます)。まだそうなっていない場合は、白いレイヤーを黒いレイヤーの上に移動します。2つのレイヤーは次のようになります。

    黒の背景のデモ画像 白い背景のデモ画像

  2. レイヤーの違いを取る:黒いレイヤーのクローンを作成し(後で必要になります)、白いレイヤーのレイヤーモードを「差分」に変更してマージします。結果を反転させます。これにより、元の画像のアルファチャネルが得られます。

    再構築されたアルファチャネル

    編集:背景が白黒でない場合、反転した差分レイヤーの背景は黒になりません。これを修正するには、最初にレイヤーの彩度を下げ(コントラストが最高になるモードを使用)、次に[ 色]→[自動]→[ノーマライズ]を使用して背景を黒にします。代わりにChannel Mixerを使用することもできますが、使用するのが少し面倒です。

    (再作成しているアルファチャネルに少なくとも100%の不透明度の部分がある場合、上記の正規化は機能します。再作成しているイメージがどこでも半透明の場合は、代わりに[ 色]→[レベル...]を使用して、ブラックポイントのみを設定できます。 )

    まだ持っていない場合は、次のステップで背景が黒のバージョンの画像も作成する必要があります。これを行うには、次の追加手順を使用します。

    • 背景が暗いオリジナルバージョンを選択します。その上に背景色で塗りつぶされた新しいレイヤーを作成します。
    • 差分レイヤーのクローンを作成し、背景を白くするように再度反転します。作成した新しい単色の上にこのレイヤーを配置し、レイヤーモードを「乗算」に設定して、下にマージします。
    • 最後に、結果のレイヤーのモードを「減算」に変更し、元の画像とレイヤーにマージします。これにより、元の背景が差し引かれ、黒い背景の画像が残ります。
  3. 事前に乗算されたアルファを持つ画像フォーマットを使用していた場合、多かれ少なかれこれで完了です。しかし、そうではないので、RGBチャネルをデマルチプライする必要があります。これを行うには、前の手順で作成したアルファレイヤーを複製し(または単にクリップボードにコピーし)、そのレイヤーモードを「分割」に設定して、手順2の前に複製した黒い背景のレイヤーとマージします。結果次のようになります(違いを確認するには、元の黒背景バージョンと比較してください)。

    非多重化RGBチャネル

  4. 次に、結果のレイヤーにレイヤーマスクを追加し、マスクを選択して、そこにアルファレイヤーを貼り付けます。結果は、ほぼ元の透明な画像のように見えるはずです。最後に、マスクを適切なアルファチャネルに変換するために、それを適用できます(ただし、GIMPのPNGエクスポートでは、そうしなくてもそれが行われます)。さあ、行きましょう—すぐに使える再構築された透明なPNG:

    透明度のある再構成画像

もちろん、この手法では、純粋な黒と純粋な白の背景にあるバージョンの画像が必要です。背景が少しずれている場合でも、同様の方法を使用できますが、追加の色調整を行う必要があり、結果が完全ではない場合があります。(編集:上記のステップ2への追加を参照してください。修正された説明は、無地の色であれば、どのような色の背景でも機能します。)


Ps。GIMPには「色消去」機能もあり(バケット塗りつぶしツールのブレンドモードとして、または画像全体の色をアルファに...)、画像のバージョンが1つしかない場合に透明度再構築するのに役立ちます。無地の背景に。ただし、慎重に使用しない限り、出力を生成する傾向があり、意図するよりも透明度が高くなります

Pps。元の画像と再構成された画像を非常に注意深く比較すると、完全同一ではないことがわかります。一部の色の値は1/256ほどずれています。これは、GIMPの「除算」レイヤーモードの仕組みによるものです。出力 =(255× 入力)/ レイヤーとなるアルファ乗算の真の逆数を計算するのではなく、実際に出力 =(256× 入力)/(レイヤーを計算します。+ 1)。このミスマッチは、見かけ上、ゼロによる除算を回避するために行われますが、一部の色は、本来とは少し異なる値に丸められる可能性があります。悲しいかな、GIMPにパッチを当てる、分割を思い通りに行うためのプラグインを書く、または他のプログラムを使用する以外に、私はこれを回避する方法を知りません。しかし幸いにも、実際には人間の目で知覚できるとしても、色の違いはめったにありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.