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,輸入文件名後,直接就可以保存。以上是源碼編輯器游戲怎麼做圖片的操作方法。