自动生成Android不同分辨率下的图片

Android屏幕分辨率适配的图标处理比较麻烦,让UI做不同尺寸的图片也挺浪费时间的,并且容易出错,于是用Python写了个工具自动化处理图片,UI只需要做好1080*1920分辨率下的图片就可以了,其它分辨率的图片自动生成。

import os.path
import sys
from PIL import Image

"""
自动生成不同分辨率下的App图片
UI设计1080*1920分辨率图片,放在drawable-xxhdpi目录下,自动生成其它的分辨率图片
"""

__author__ = [‘"Xitao":<[email protected]>‘]

def image_resize(img_file, target, percent):
    """resize image and save to target path
    :param img_file: image file path
    :param target: save path
    :param percent: resize percent
    :return:
    """
    img = Image.open(img_file)
    print(img.size)
    width, height = img.size
    target_img = img.resize((int(width * percent), int(height * percent)), Image.ANTIALIAS)
    target_img.save(target)
    img.close()
    target_img.close()
    print(" save target image to " + target)

def path_resize(src, target, percent):
    if not os.path.isdir(src):
        print(src + " must be a dir")
        return -1

    os.chdir(src)
    cwd = os.getcwd()
    dirs = os.listdir(cwd)
    for file_name in dirs:
        print file_name
        if file_name.endswith(‘.9.png‘):
            continue

        src_file = os.path.join(cwd, file_name)

        if not os.path.exists(target):
            os.mkdir(target)
        image_resize(src_file, target + ‘/‘ + file_name, percent)

def android(res_dir):
    xxhdpi_path = res_dir + "/drawable-xxhdpi/"

    if not os.path.isdir(xxhdpi_path):
        print("xxhdpi_path must be a dir")
        return -1

    path_resize(xxhdpi_path, res_dir + ‘/drawable-xhdpi‘, 0.667)
    path_resize(xxhdpi_path, res_dir + ‘/drawable-hdpi‘, 0.444)
    path_resize(xxhdpi_path, res_dir + ‘/drawable-mdpi‘, 0.296)

if __name__ == "__main__":
    print(‘please input your androd res dir path‘)
    print(sys.argv)
    if sys.argv[1]:
        android(sys.argv[1])
时间: 2024-08-26 20:26:33

自动生成Android不同分辨率下的图片的相关文章

不自动生成Android Dependencies的解决方式

今天遇到的奇怪问题是网上下载的demo导入第三方包运行后Android: NoClassDefFoundError的错误,原因是第三方的jar包并没有打包进apk里,运行是肯定要出错的. 网上百度了N久,都是说先移除之前的Libraries,再将lib更名为libs的做法.今天是遇到邪门了,照做还是运行报错.后来发现直接add的jar包还是放在Referenced Libraries里,ADT升级到17后就出现了Android Dependencies,但这是自动生成的.将名字改来改去工程删来删

android将drawable下的图片转换成bitmap

将drawable下的图片转换成bitmap 1. Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx); 2.Resources r = this.getContext().getResources();      Inputstream is = r.openRawResource(R.drawable.xxx);      BitmapDrawable  bmpDraw = new Bitm

linux创建账户并自动生成主目录和主目录下的文件

useradd -d /home/test -m test; passwd test; 然后给test设置密码. 1. useradd 添加用户或更新新创建用户的默认信息 语法:useradd 选项 用户名 该命令的各选项含义如下: -c comment 描述新用户帐号,通常为用户全名,comment 为字符串. -d home_dir 设置用户主目录,默认值为用户的登录名,并放在/home目录下. -D 创建新帐号后保存为新帐号设置的默认信息. -e expire_date 用 MM/DD/Y

Mybatis_plus 自动生成代码时因为下划线造成的问题

1.oracle 在Mybatis_plus执行首先会进行一系列的配置,在配置的时候要注意: 1.StrategyConfig.setTablePrefix设置表名前缀 这一步可能会造成一些影响 2.DataSourceConfig.setDbType(DbType.ORACLE) 要注意这句话,要加上. 3.也是我折腾了半天时间的问题:strategy.setInclude()  设置表名 在Oracle的时候,如果你在写表名的时候,写成小写:那么你可能会发现文件夹生成了,但是没有java文件

网页嵌入自动生成当前网页二维码图片代码

利用谷歌api的代码可以方便的嵌入:支持静动态网页 魅力网络整理代码如下: <script type="text/javascript">   thisURL = document.URL;   strwrite =  "<img src='https://chart.googleapis.com/chart?cht=qr&chs=150x150&choe=UTF-8&chld=L|4&chl="  + thisUR

Cocos2d-x 中Android.mk自动生成.cpp与.c类路径

今天,同事发现了一个可以自动生成Android.mk的脚本.这里贴上留着以后使用.之前在网上找的脚本只能识别以.cpp结尾的类,经过修改后也可以识别.c结尾的类. LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := cocos2dcpp_shared LOCAL_MODULE_FILENAME := libcocos2dcpp #traverse all the directory and subdirectory

MySQL主键自动生成和生成器表以及JPA主键映射

MySQL主键自动生成 表设计 MySQL有许多主键生成策略,其中很常见的一种是自动生成.一般情况下,主键类型是BIGINT UNSIGNED,自动生成主键的关键词是AUTO_INCREMENT. CREATE TABLE Stock ( id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, NO VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, price DECIMAL(6,2) N

Mybatis Generator代码自动生成(实体类、dao层、映射文件)

写了一段时间增删改查有点厌烦,自己找了下网上的例子鼓捣了下自动生成. 首先得有一个配置文件: generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"   

Android gen根目录下自动生成的R文件指向问题

今天才弄明白,原来在调用vitamio包的时候使用它们的R文件,然后在迁入广告的时候出现了问题,但是瞎胡搞半天后把问题解决了,可没有明白这是什么原因. 今天更新应用又出现了相同的情况,无意中打开了gen的根目录妈蛋!发现里面的报名根本就不是我现在应用的包名.而是调用的那个工程的包名!这下终于找到根本原因了,但是怎么解决呢???----------->修改包名呗~~~~~~~可是你改了它又会自动生成了原来的那个,--------------后来终于发现原来这个R文件的包名适合manifest文件中