58

\drawableプロジェクトのフォルダーに9 パッチ イメージを追加しようとすると、同じエラーが発生します。

ERROR: 9-patch image C:\...\res\drawable\appwidget.9.png malformed.
Frame pixels must be either solid or transparent (not intermediate alphas).
Found at pixel #3 along top edge. Failure processing PNG image
C:\...\res\drawable\appwidget.9.png

この例の奇妙な点は、SDK リソースにある「android-g1-icon」イメージからこのイメージを取得したことです。したがって、問題ないはずです。これまでに試した 9 パッチの画像でも同じことが起こりました。何が間違っている可能性がありますか?

4

14 に答える 14

32

Android Studio でも同じ問題が発生しました。

AAPT out(943142208) : No Delegate set : lost message:Done
AAPT err(943142208): ERROR: 9-patch image /Users/cartman/Github/UteacherAndroid/RefactorDemo/app/src/main/res/drawable-xxhdpi/nav_shabow.9.png malformed.
AAPT err(943142208):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(943142208):        Found at pixel #1 along left edge.

これが私が解決した方法です: Android Sdk ディレクトリの下にある draw9patch ツールを開きます

cd /Android/sdk/tools
./draw9patch

.9 png を開いて再度保存します。それが役に立てば幸い。

于 2015-08-03T06:21:17.647 に答える
23

これは、20.0.3 である最新の ADT の問題です。代わりに *.9.png の名前を *.png に変更して作業を開始できます。

18.0.0 バージョンの ADT では、このタイプのエラーのプロンプトが表示されず、正常に動作するため、これは ADT のみのバグだと思います。

于 2012-08-24T09:20:36.137 に答える
11

リソース コンパイラは、9 パッチの 1 ピクセルの境界線を取り除きます (そして、おそらくそれらから得られた情報を .9.png ファイルの外部のより効率的な方法で保存します)。これらの .9.png ファイルを .apk から取り出した場合は、境界線を手動で追加する必要があります。

于 2010-11-25T19:53:20.137 に答える
4

現在、Android ビルド ツールには、AAPT と Java クランチャーの 2 つの PNG クランチャーがあります。どちらも不正な 9 パッチ イメージをチェックします。

ビルドツールのソースコードを調べました。9 パッチ イメージの圧縮を無効にしたり、不正な形式のものを無視したりするオプションはありません。少なくともユーザーが利用できるオプションではありません。

AAPT を置き換える簡単なスクリプトを次に示します。

https://gist.github.com/ksc91u/37513796b2cec37bb3c5

9 パッチ イメージを圧縮するために呼び出されると、単純にファイルがコピーされます。それ以外の場合は、@ARGV を使用して実際の AAPT が起動されます。

于 2014-09-17T09:41:10.993 に答える
2

オンライン生成ツールを使用してイメージを作成している場合は、名前から特殊文字を削除して機能させる必要があります。

于 2015-12-30T13:51:23.153 に答える
1

9 パッチが間違っている可能性があります。

おそらく、9 パッチの 1 ピクセルの境界線を取り除くと、そこから得られる情報が利用できなくなります。テキストの一番下の行と右の行も追加してみてください。あなたの問題を解決するのに役立つと思います。

于 2014-10-14T13:22:00.660 に答える
1

私にとっての問題は、自分で 9 パッチを作成したことにあるようです。左端と上端に 1 ピクセルの境界線があれば十分だと思いましたが、画像の各端に 1 ピクセルの境界線があることを確認する必要があります。

于 2014-12-20T11:20:46.010 に答える
1

記録のために: 私にとって、このエラーは右側のサイトと下側の黒い境界線から発生したことが判明しました. そのため、すべての側面(上、右、下、左)に黒い境界線がありました。冗長な右と下の行を削除すると、魅力的に機能しました。

于 2013-11-15T12:01:14.533 に答える
0

Android Studio でストレッチ スコープを変更することで解決しました。

于 2016-10-12T01:57:56.860 に答える
0

エラーが発生すると、Androidスタジオでも画像が開きます。これを修正するために私がしたことは、パッチの境界線を 1 つの描画ピクセルだけ拡張することだけでした。再実行したところ、うまくいきました。理由はわかりませんが、いくつかの画像でこれを繰り返しテストしました。

于 2014-09-04T21:00:52.670 に答える
0

画像にパッチを適用すると、境界に黒い線が作成されます。その境界線は、透明または完全に塗りつぶされている必要があります。そうでない場合、このエラーが発生します。

したがって、解決策は、幅と高さを 2 ピクセル増やすことです。(Photoshop では、画像ではなくキャンバスのサイズを大きくします。)

于 2015-10-05T10:02:03.253 に答える