Подтвердить что ты не робот

Ошибка изображения с 9 патчами в Android

Всякий раз, когда я пытаюсь добавить 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-патч-изображением, которое я пробовал до сих пор. Что может быть неправильным?

4b9b3361

Ответ 1

Я столкнулся с той же проблемой в 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 и сохраните его снова. Надеюсь, что это поможет.

Ответ 2

это проблема с последним ADT, который составляет 20.0.3. вы можете вместо этого переименовать *.9.png в *.png и начать работать. Я думаю, что это ошибка только с adt, так как для версии 18.0.0 adt она не запрашивает этот тип ошибок и отлично работает

Ответ 3

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

Ответ 4

У меня была та же проблема, когда я перенес проектную форму Eclipse в Android Studio.

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

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

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

Ответ 5

Теперь есть два png cruncher в инструменте сборки android, aapt и java cruncher. Обе проверки для искаженных 9 патч-изображений.

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

Итак, вот простой script для замены aapt.

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

Ответ 13

Я решил это, изменив область растяжения в Android Studio

Ответ 14

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

Это единственное решение моей проблемы.