IOS篇
- logo格式
正常我们拿到ux给到的设计logo导出后当我们存到ios本地的路径之中,在上架之前,需要去除图像中的alpha通道,否则会有上架限制,那么我们应该怎么去除这个所谓的alpha通道呢?alpha通道又代表了什么呢?
1:在图像处理中alpha到底是什么?
Alpha通道是计算机图形学中的术语,指的是特别的通道,意思是“非彩色”通道,主要是用来保存选区和编辑选区。
2:为什么用‘Alpha’代表透明度?
Alpha 没有透明度的意思,不代表透明度。opacity 和 transparency 才和透明度有关,前者是不透明度,后者是透明度。比如 css 中的「opacity: 0.5」就是设定元素有 50% 的不透明度。后来 Alvy Ray Smith 提出每个像素再增加一个 Alpha 通道,取值为0到1,用来储存这个像素是否对图片有「贡献」,0代表透明、1代表不透明。也就是说,「Alpha 通道」储存一个值,其外在表现是「透明度」,Alpha 和透明度没啥关系。
为什么取名为 Alpha 通道,我觉得是因为这是除RGB以外「第一个通道」的意思,没有别的更深刻的含义。
「Alpha 通道」是图片内在的一个属性,用 css 或者其他外部方法设定透明度,并没有改变图片的 Alpha 通道的值。
阿尔法通道(α Channel或Alpha Channel)是指一张图片的透明和半透明度。例如:一个使用每个像素16比特存储的位图,对于图形中的每一个像素而言,可能以5个比特表示红色,5个比特表示绿色,5个比特表示蓝色,最后一个比特是阿尔法。在这种情况下,它要么表示透明要么不是,因为阿尔法比特只有0或1两种不同表示的可能性。又如一个使用32个比特存储的位图,每8个比特表示红绿蓝,和阿尔法通道。在这种情况下,就不光可以表示透明还是不透明,阿尔法通道还可以表示256级的半透明度,因为阿尔法通道有8个比特可以有256种不同的数据表示可能性。
RGBA是代表Red(红色) Green(绿色) Blue(蓝色)和 Alpha的色彩空间。虽然它有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间,但是Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。(线性插值是数学、计算机图形学等领域广泛使用的一种简单插值方法)
真正让图片变透明的不是Alpha 实际是Alpha所代表的数值和其他数值做了一次运算 。比如你有一张图片你想抠出图片中间的一部分 在PS里你会建立一个蒙板 然后在蒙板里把不需要的地方填充成黑色 需要的留成白色 这个时候实际上是是做了一次乘法。用黑色所代表的数值0去乘以你所填充的地方 那么这个地方就变透明了
3.去除alpha通道
3.1:在mac下打开当前图片,command+shift+s copy一份图片,然后在command+s保存的时候,将会弹出,我们取消勾选的Alpha选项保存即可得到去除alpha通道的logo图片
3.2:当然你如果有大批量替换的话可以在appstore中下载Alpha Channel Remover Pro,这个工具可以对icon进行批量操作,外观如下:
操作界面如下:
直接将本地需要操作的图片拖拽至操作见面,然后点击下方Remove Alpha channel按钮即可,本地操作图片即已去除Alpha通道
-
logo存放路径
Android篇
-
logo存放路径
在android中我们正常在android-studio3.0中run app执行后会自动在res目录下生成一个名叫mipmap-anydpi-v26的文件夹,文件夹中包含两个xml文件
Android Studio 3 creates an adaptive icon for your app which is only available in SDK 26 and up. Launcher icons should be put into the mipmap folders.
If you look at your manifest, you can see that it references ic_launcher
android:icon="@mipmap/ic_launcher"
If you look in your mipmap folder, you see your normal 5 different launcher icons which will be used for anything lower than SDK 26. For SDK 26 and up, it uses the XML files from the anydpi-v26 folder to make use of adaptive icon.
Both answers above give pretty good summary of what mipmap-anydpi-v26 folder does but I feel why part is missing. So heres my 2 cents.
anydpi: These resources take precedence in any dpi. So even if you have mipmap-hdpi or mipmap-mdpi matching with current devices density, resource from mipmap-anydpi will always be picked up.
anydpi-v26: This is an additional filter over just anydpi. This says resources will always be picked up from anydpi-v26 regardless of devices density only if SDK/API level is 26 or higher(Oreo).
So you can have mipmap-anydpi-v26 or drawable-anydpi-v26. All resource folders will follow above logic.
Now that we know the answer of "why mipmap-anydpi-v26"? lets try to understand why "mipmap-anydpi-v26/ic_launcher.xml".
This is because ic_launcher.xml is used to describe adaptive icon for your app which is only available in SDK 26 and up as mentioned by other answers. Hope this helps.