studio item example android android-layout bitmap resolution android-resources

item - Herramienta para convertir por lotes mapas de bits de recursos de Android a diferentes densidades



scale bitmap android xml (6)

Necesito soporte post-lanzamiento para diferentes densidades de visualización en Android

Durante el desarrollo drawable-hdpi ha crecido a 160 png (como 20 de ellos 9 parches) activos

Ahora necesito convertir todos esos mapas de bits a mdpi, ldpi (los diseños y los XML dibujables ya están bien, para evitar generar OOM en LayoutInflater

¿Hay alguna herramienta adecuada para convertir todos esos mapas de bits en lotes?


Aquí hay una secuencia de comandos simple para crear productos de Android de menor resolución a partir de los de mayor resolución.

Por ejemplo, dado un lote de imágenes -xhdpi, puede generar imágenes -hdpi y -mdpi.

Con esta secuencia de comandos, es posible exportar solo obras de arte de alta resolución de las herramientas de autoría y luego crear las versiones de menor resolución con algunos comandos por lotes.

Uso de scripts:

drawable_convert.py -d res/drawable-mdpi -d res/drawable-hdpi res/drawable-xhdpi-v14/*.png

Esto tomará cada archivo png de xhdpi y colocará versiones de menor resolución en las carpetas mdpi y hdpi.

http://kmansoft.com/2012/05/23/scale-android-drawables-with-a-script/
script original, https://gist.github.com/2771791

Script en sí, para evitar la dependencia de github gist / blogpost original.
nombre drawable_convert.py

#!/usr/bin/python import sys import argparse import os import re '''''' A simple script to create lower-resolution Android drawables from higher-resolution ones. For example, given a batch of -xhdpi images, you can generate -hdpi and -mdpi images. This makes it possible to only export highest-resolution artwork from image authoring tools, and automate the rest. Usage: drawable_convert.py -d res/drawable-mdpi -d res/drawable-hdpi res/drawable-xhdpi-v14/select*.png ... will take select*.png from xhdpi and place versions into mdpi and hdpi folders. Correct resize ratios are computed based on resource directory names. Actual scaling is done by ImageMagick''s convert command. '''''' class Converter: def __init__(self, dstList): print u''Dst list: {0}''.format(dstList) self.mDstList = dstList def convert(self, src): for dstpath in self.mDstList: (srcpath, srcname) = os.path.split(src) dst = os.path.join(dstpath, srcname) self.convertOne(src, dst) def convertOne(self, src, dst): print u''/n*****/n{0} to {1}/n*****/n''.format(src, dst) '''''' Determine relative density '''''' srcDpi = self.getDpi(src) dstDpi = self.getDpi(dst) if srcDpi < dstDpi: print u''NOT converting from {0}dpi to {1}dpi''.format(srcDpi, dstDpi) else: factor = dstDpi*100/srcDpi print u''Converting from {0}dpi to {1}dpi, {2}%''.format(srcDpi, dstDpi, factor) cmd = u''convert -verbose "{0}" -resize "{2}%x{2}%" "{1}"''.format(src, dst, factor) os.system(cmd) def getDpi(self, f): p = os.path.dirname(f) if re.match(''.*drawable.*//-mdpi.*'', p): return 160 elif re.match(''.*drawable.*//-hdpi.*'', p): return 240 elif re.match(''.*drawable.*//-xhdpi.*'', p): return 320 else: raise ValueError(u''Cannot determine densitiy for {0}''.format(p)) if __name__ == "__main__": '''''' Parse command line arguments '''''' parser = argparse.ArgumentParser(description=''Converts drawable resources in Android applications'') parser.add_argument(''-d'', dest=''DST'', action=''append'', required=True, help=''destination directory'') parser.add_argument(''src'', nargs=''+'', help=''files to convert (one or more)'') args = parser.parse_args() cv = Converter(args.DST) for src in args.src: cv.convert(src) '''''' if [ $# -lt 1 ] ; then echo "Usage: $0 file_list" exit 1 fi for f in $* do echo "File: ${f}" convert -verbose "${f}" -resize "75%x75%" "../drawable-hdpi/${f}" convert -verbose "${f}" -resize "50%x50%" "../drawable-mdpi/${f}" done ''''''



Alguien más hizo esta herramienta realmente agradable , que puede cambiar el tamaño automáticamente de los activos de iOS o de los activos de Android de mayor resolución que tengas.




Creé una herramienta que puede reescribir imágenes de distintos tipos (png, jpg, gif, svg, psd, 9-patch ...). Utiliza algoritmos de escalabilidad de alta calidad y es compatible con ciertas herramientas de compresión sin pérdida como pngcrush. Hay una GUI y línea de comando ui.

https://github.com/patrickfav/density-converter

En su caso, establecería el factor de escala de origen en 2 y verificará "escalar el escalado" y también establecerá la plataforma en Android.