png源码
‘壹’ java程序将彩色png图片转为黑白的
帮你搜了一段网上流行的代码:
灰度变换
下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用R*0.3+G*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。
/* GrayFilter.java*/
/*@author:cherami */
/*email:[email protected]*/
import java.awt.image.*;
public class GrayFilter extends RGBImageFilter {
int modelStyle;
public GrayFilter() {
modelStyle=GrayModel.CS_MAX;
canFilterIndexColorModel=true;
}
public GrayFilter(int style) {
modelStyle=style;
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
if (modelStyle==GrayModel
else if (modelStyle==GrayModel
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
/* GrayModel.java*/
/*@author:cherami */
/*email:[email protected]*/
import java.awt.image.*;
public class GrayModel extends ColorModel {
public static final int CS_MAX=0;
public static final int CS_FLOAT=1;
ColorModel sourceModel;
int modelStyle;
public GrayModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=0;
}
public GrayModel(ColorModel sourceModel,int style) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=style;
}
public void setGrayStyle(int style) {
modelStyle=style;
}
protected int getGrayLevel(int pixel) {
if (modelStyle==CS_MAX) {
return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));
}
else if (modelStyle==CS_FLOAT){
return (int)(sourceModel.getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel.getBlue(pixel)*0.11);
}
else {
return 0;
}
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return getGrayLevel(pixel);
}
public int getGreen(int pixel) {
return getGrayLevel(pixel);
}
public int getBlue(int pixel) {
return getGrayLevel(pixel);
}
public int getRGB(int pixel) {
int gray=getGrayLevel(pixel);
return (getAlpha(pixel)<<24)+(gray<<16)+(gray<<8)+gray;
}
}
‘贰’ Android源码发开记录-修改开机logo启动页、开机动画
开机logo主要与kernel/drivers/video/logo下的logo_linux_clut224.ppm有关。
现kernel源码内一般以提供厂商的logo为主。
我们需要替换的文件也就是该ppm文件。
这里直接提供png转ppm的sh脚本。前提是必须安装了以下工具(pngtopnm,pnmquant,pnmtoplainpnm)
./png2ppm.sh XX.png
用生成的同名ppm文件替换logo_linux_clut224.ppm。
同时删除kernel/drivers/video/logo下的logo_linux_clut224.c和logo_linux_clut224.o
Android开机动画主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片。、
这个一般flash制作或者选择交给美工制作了。图片张数尽量不要太多。
关键:图片一定要按顺序命名。
重点在于desc.txt文件。
其中1188 624代表分辨率,表示帧动画以这个分辨率显示。分辨率不是越高越好,容易造成开机卡顿,不流畅。
25表示的是帧数,就是每秒播放的图片数量。
p1(代表着播放一次) 0(空指令)part0 */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次
p0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放
打包要用zip格式,而不是rar格式。另外压缩的时候压缩方式要选择存储。将压缩包名修改为bootanimation.zip。
1)可直接将生成的bootanimation.zip放入设备/system/meida目录下重启验证开机动画效果。
2)源码上可直接将bootanimation.zip拷贝至/out/target/proct/rk3288/system/media目录下,最终打包进成型固件中。
‘叁’ 源码编辑器游戏怎么做图片
1、打开源码编辑器。可以直接上传代码片段生成图片,支持所有的编程语言和代码风格,背景色可以自定义,效果实时显示,非常方便。
2、需要保存图片的话,直接点击右上角的Export按钮就行,目前官方支持2种格式的图片,一种是PNG,一种是SVG,输入文件名后,直接就可以保存。以上是源码编辑器游戏怎么做图片的操作方法。