9-патч ошибки изображения в Android - PullRequest
55 голосов
/ 25 ноября 2010

Всякий раз, когда я пытаюсь добавить изображение 9-патчей в папку \drawable в моем проекте, я получаю ту же ошибку:

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

Странная вещь в этом примере состоит в том, что я получил это изображение из изображений «android-g1-icon», найденных в ресурсах SDK, поэтому оно должно быть в порядке. То же самое случилось с любым изображением с 9 патчами, которое я пробовал до сих пор. Что может быть не так?

Ответы [ 14 ]

31 голосов
/ 03 августа 2015

Я столкнулся с той же проблемой в 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.

Вот как я решил ее: откройте инструмент draw9patch в каталоге Android Sdk

cd /Android/sdk/tools
./draw9patch

Откройте .9 pngи сохраните его снова.Надеюсь, это поможет.

21 голосов
/ 24 августа 2012

Это проблема с последним ADT, который является 20.0.3. Вместо этого вы можете переименовать * .9.png в * .png и начать работать.

Я думаю, что это ошибка только с ADT, поскольку для версии 18.0.0 ADT она не запрашивает этот тип ошибки и работает нормально.

11 голосов
/ 25 ноября 2010

Компилятор ресурсов удаляет 9-патчевые однопиксельные границы (и, по-видимому, более эффективно сохраняет полученную от них информацию за пределами файла .9.png).Если вы выловили эти файлы .9.png из .apk, вам нужно будет вручную добавить границу.

8 голосов
/ 21 ноября 2014

У меня была такая же проблема при переносе формы проекта Eclipse в Android Studio.

Что вам нужно сделать, это удалить .9 из имени файла изображения, а затем открыть его в инструменте draw9patch (находится в каталоге / sdk / tools) и теперь, нажать на кнопку Show Bad Patches в правом верхнем углу. ,

Затем вы должны увидеть плохие пиксели и области, отмеченные красным, вам нужно будет поработать там, пока у вас не появятся красные плохие патчи. Для меня я просто пометил один пиксель по среднему левому краю и один пиксель по среднему верхнему краю и отметил почти весь правый край и нижний край. нажмите кнопку еще раз и увидите, что у вас нет плохих патчей.

Сохраните файл как .9.png и поместите его обратно в папку res вашего проекта. Android Studio должна собрать ваш проект без проблем за 9 патчей.

4 голосов
/ 17 сентября 2014

Теперь в инструменте сборки Android есть два PNG-дробилки, AAPT и Java-дробилка.Обе проверки на наличие 9 исправленных изображений патчей.

Я изучил исходный код инструмента сборки.Нет возможности отключить сжатие на 9 изображениях патчей или игнорировать искаженные изображения.По крайней мере, опции недоступны для пользователей.

Итак, вот простой скрипт для замены AAPT:

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

При вызове для сжатия изображения 9 патчей онпросто скопируйте файл, иначе он запустит настоящую AAPT с @ ARGV.

3 голосов
/ 18 ноября 2013

В моем случае я по ошибке расширил черную рамку в верхнем левом углу.Убедитесь, что углы прозрачны.

2 голосов
/ 30 декабря 2015

Если вы создаете изображение с помощью онлайн-генератора, вы должны удалить все специальные символы из имени, чтобы оно работало.

1 голос
/ 20 декабря 2014

Для меня проблема, похоже, в том, что я сам создал 9 патч. Я подумал, что этого достаточно, чтобы на левом и верхнем краях была граница размером 1 пиксель, но нужно убедиться, что на каждом краю изображения есть граница размером 1 пиксель.

1 голос
/ 15 ноября 2013

Только для записи: для меня оказалось, что эта ошибка произошла из-за черной границы на правой стороне сайта и нижней части.Таким образом, у меня была черная рамка со всех сторон (сверху, справа, снизу и слева).Удаление лишней правой и нижней строки сработало как брелок.

0 голосов
/ 08 июня 2017

Я обнаружил, что проблема в файлах * .9.png.Откройте и проверьте все файлы 9-Patch, убедитесь, что все файлы имеют черную рамку шириной в 1 пиксель, если ее нет, просто щелкните белое место и добавьте его, а затем сохраните.решение моей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...