通常在iOS上开发使用的图片素材1x,2x,3x三种

下面利用python Image 库 resize函数,由一个大图,自动生成1x,2x,3x的素材照片;

1. 首先你的python环境要安装有Image库, 即PIL

没有安装的,下载源码 http://effbot.org/downloads/Imaging-1.1.7.tar.gz

安装PIL:

     $ tar xvfz Imaging-1.1..tar.gz
$ cd Imaging-1.1.
$ python setup.py install

2. 处理逻辑

传入照片路径,设定生成照片的名字,1x的照片大小;

脚本处理

3. 使用的核心函数 resize

#打开指定路径的照片
img = Image.open(infile) #转换成RGBA 添加alpha,大多数照片还是要透明的
img = img.convert("RGBA") #转换照片大小
save1x = img.resize((inWidth*,inHeight*)) #保存到指定路径,输出
save1x.save(out1x)

4. 完整的处理python脚本

#coding=utf-8
#自动生成iOS上1x,2x,3x图
#dev.keke@gmail.com
#17-04-19 from sys import argv
import os.path,Image #verify input
if len(argv)!=5 or argv[1]=='-h':
print "调用错误,请参考如下说明"
print "使用该脚本自生成ios上 1x,2x,3x图片"
print "使用示例,生成loginBtn.png(100,100),loginBtn@2x.png(200,200),loginBtn@3x.png(300,300)"
print "python xxx.py ~/path/test.png loginBtn 100 100"
print ""
exit() #in
infile = argv[1]
inName = argv[2]
inWidth = int(argv[3])
inHeight = int(argv[4])
fpath,fname = os.path.split(infile)
img = Image.open(infile)
img = img.convert("RGBA")
x,y = img.size
print "infile: " + infile
print "inSize: (" + str(x) + "," + str(y) +")" #out
out1x = fpath + "/" + inName + ".png"
out2x = fpath + "/" + inName + "@2x.png"
out3x = fpath + "/" + inName + "@3x.png"
save1x = img.resize((inWidth*1,inHeight*1))
save1x.save(out1x)
save2x = img.resize((inWidth*2,inHeight*2))
save2x.save(out2x)
save3x = img.resize((inWidth*3,inHeight*3))
save3x.save(out3x)
print "out:"
print out1x + " size: (" + str(inWidth*1) +","+ str(inHeight*1) +")"
print out2x + " size: (" + str(inWidth*2) +","+ str(inHeight*2) +")"
print out3x + " size: (" + str(inWidth*3) +","+ str(inHeight*3) +")" print "SUCCESS"

使用示例:

cocoaPro-2:iostp cocoajin$ ls
howto.gif iosImg.py test.png
cocoaPro-2:iostp cocoajin$ python iosImg.py ./test.png download 100 100
infile: ./test.png
inSize: (473,473)
out:
./download.png size: (100,100)
./download@2x.png size: (200,200)
./download@3x.png size: (300,300)
SUCCESS
cocoaPro-2:iostp cocoajin$ ls
download.png download@3x.png iosImg.py
download@2x.png howto.gif test.png
cocoaPro-2:iostp cocoajin$

下载脚本

python Image resize 对iOS图片素材进行2X,3X处理的更多相关文章

  1. 实现iOS图片等资源文件的热更新化(零): 序

    必要的序 以后在写系列文章,准备把基本的规划和动机等,单独作为一个小的序言部分给独立出来.序言部分,可以较为完整地交待系列文章的写作动机,所展示的编码技术可能的应用场景等.个人,我还是比较看重文章或者 ...

  2. 大屏iPhone的适配 +iOS 图片尺寸要求

    摘自:http://blog.ibireme.com/2014/09/16/adapted_to_iphone6/ 苹果公司官网设计介绍到:Retina显示屏的超高像素密度已超过人眼能分辨的范围.Re ...

  3. iOS图片缓存

    iOS的内存管理始终是开发者面临的大问题,内存占用过大时,很容易会被系统kill掉,开发者需要尽可能的优化内存占用问题. 现在的App界面做的越来越精致,里面集成了大量的图片,笔者首先想到的就是如何减 ...

  4. 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹

    简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...

  5. iOS 图片轮播图(自动滚动)

    iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...

  6. jquery mobile上传图片完整例子(包含ios图片横向问题处理和C#后台图片压缩)

    上传图片本身是个基本的小功能,但是到了移动端就不那么简单了,相信找到这篇文章的你一定有深深的同感. 本文实例是:在(移动端)页面中点击图片,然后选择文件,然后保存.使用Asp.net 难点一:后台获取 ...

  7. iOS图片加载到内存中占用内存情况

    我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              10 ...

  8. 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面

    简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码, ...

  9. 实现iOS图片等资源文件的热更新化(一): 从Images.xcassets导出合适的图片

    本文会基于一个已有的脚本工具自动导出所有的图片;最终给出的是一个从 Images.xcassets 到基于文件夹的精简 合适 的图片资源集的完整过程.难点在于从完整图片集到精简图片集,肯定是基于一个定 ...

随机推荐

  1. k8s nod rc service 使用

    引用自:https://blog.csdn.net/dream_broken/article/details/53115770

  2. Sharc FLAGS I/O Register(flag0~3)

    Core FLAG Pins Multiplexing     This module also includes the multiplexers of the FLAG0-3 pins shown ...

  3. SSL/TLS中间人攻击

    准备:kali.xp kali ip:192.168.14.157 目标ip:192.168.14.158 目标网关:192.168.14.2 使用工具:ettercap.sslstrip.arpsp ...

  4. tensorflow相关API的学习

    学习目录 1.tensorflow相关函数理解 (1)tf.nn.conv2d (2)tf.nn.relu (3)tf.nn.max_pool (4)tf.nn.dropout (5)tf.nn.si ...

  5. 移动端H5页面返回并且刷新页面(BFcache)

    项目中的需求:点击浏览器中的返回按钮,要让页面重新加载资源.因为这部分的资源每次去加载的内容都不一样,如果返回的时候,还是看到原先的内容,那做这个内容块的意义就很小了:而如果用户看完了这部分内容,再返 ...

  6. 版本控制系统 git 之基础讲解

    很久之前就用起了git,但都是用在从github上clone项目上,或者hexo的博客提交上,直到前段时间加入了学校的技术中心,需要用git进行文件管理,才去了解了下git的具体使用方式. 什么是gi ...

  7. 【java并发核心二】Exchanger的使用

    类 Exchanger 的功能可以使2个线程之间传输数据,比生产者/消费者模式方便. Exchanger类的结构很简单,重点就是exchange()方法. exchange()方法是阻塞执行的,可以设 ...

  8. 用js来实现那些数据结构01(数组篇01-数组的增删)

    在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念.那么为什么要从数组说起?数组在js中是最常见的内存数据结构,数组数据结构在js中拥有很多的方法,很多初学者记 ...

  9. 使用OutputStream向屏幕上输出内容

    使用OutputStream向屏幕上输出内容 /** * 使用OutputStream向屏幕上输出内容 */ import java.io.*; class hello { public static ...

  10. 模拟页面获取的php数据(四)

    <?php $tqzf = [ "aData" => [//通勤方式 "trafficType" => [ 0 => [ "t ...