2014-03-16 7 views
6

Я использую Android Studio с Gradle.Android Studio/gradle: автоматическое изменение размера изображения для android

Интересно, есть ли способ автоматизировать изменение размера изображения для разных разрешений во время сборки. Я имею в виду, чтобы иметь один набор изображений и автоматически изменять размер различных разрешений (например, xxhdpi, xhdpi, hdpi, mdpi, ldpi)

Идеальное решение будет иметь некоторый Gradle плагин, который может быть настроен, чтобы произвести изменения размеров изображения в соответствующая папка перед сборкой apk

+0

да и нет. Да - с мощью groovy вы можете вызвать любой инструмент командной строки или java-библиотеку для изменения размеров изображений. Нет. Я думаю, что изменение размера изображения не должно быть частью процесса сборки, но может быть задачей в скрипте построения. –

+0

Взгляните на http://www.ainotenshi.org/818/resizing-images-using-the-command- line –

ответ

1

Я разработал Gradle плагин, который позволяет делать именно это (на основе ImageMagick)

Во-первых, вам нужно добавить плагин в скрипт сборки:

buildscript { 
    repositories { 
    mavenCentral() 
    } 

    dependencies { 
    classpath 'com.eowise:gradle-imagemagick:0.4.0' 
    } 
} 

Затем добавить задачу для каждого размера:

[ 
     [ variant: 'mdpi', size: '33%' ], 
     [ variant: 'hdpi', size: '50%' ], 
     [ variant: 'xhdpi', size: '66%' ], 
     [ variant: 'xxhdpi', size: '100%' ] 
].each { 
    item -> 
     task("buildIcons${item.variant.capitalize()}", type: com.eowise.imagemagick.tasks.Magick) { 
      convert 'resources/images', { include '*.png' } 
      into "app/src/main/res/drawable-${item.variant}" 
      actions { 
       -background('none') 
       inputFile() 
       -resize(item.size) 
       outputFile() 
      } 
     } 
} 

Вы можете найти подробную информацию о том, как использовать этот плагин на the wiki page на GitHub.

+0

Отлично! Выглядит точно, что мне нужно! Я предлагаю добавить еще одну очень полезную функцию: уменьшение палитры в png, что позволяет улучшить степень сжатия. Как и в tinypng (см. Http://tinypng.com) –

+0

Вы знаете, как это сделать с помощью командной строки imagemagick? – Aurel

+0

@Aurel, PLS помочь мне. Скажите мне, что я сделал неправильно в своем решении: http://pastebin.com/FypRBV9V –

Смежные вопросы