php代碼沒(méi)幾行,信息量很大,翻譯成java代碼行數(shù)量比較大。僅提供思路和php代碼解釋。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括濂溪網(wǎng)站建設(shè)、濂溪網(wǎng)站制作、濂溪網(wǎng)頁(yè)制作以及濂溪網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,濂溪網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到濂溪省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
---------------
?php?
$appid?=?"123"; //數(shù)組里面的值,id。
$apikey?=?"456";?//數(shù)組里面的值,為加密密鑰。
$secretKey?="789";?//數(shù)組里面的值,安全密鑰。
$timestamp?=?time();?////數(shù)組里面的值,獲得當(dāng)前時(shí)間。
//UNIX?時(shí)間戳(timestamp)是?PHP?中關(guān)于時(shí)間日期一個(gè)很重要的概念,它表示從?1970年1月1日?00:00:00?到當(dāng)前時(shí)間的秒數(shù)之和。
//echo輸出$timestamp變量值,例如輸出了1389379960
echo?$timestamp;??
//定義數(shù)組。以鍵值對(duì)方式存儲(chǔ)。
//'appid'?'apikey'?'secretkey'?'timestamp'是key,鍵。
//$appid?$apikey,?$secretKey?$timestamp是value,值。
$params?=?array('appid'=$appid,?'apikey'=$apikey,?'secretkey'=$secretKey,?'timestamp'=$timestamp);
//對(duì)數(shù)組鍵值進(jìn)行升序排序。排序結(jié)果為apikey?appid?secretkey?timestamp
ksort($params);
//拼接數(shù)組中的參數(shù),并且用encoded編碼。
//http_build_query?--?生成?url-encoded?之后的請(qǐng)求字符串。當(dāng)數(shù)組沒(méi)有寫下標(biāo)時(shí),就會(huì)用第二個(gè)參數(shù)結(jié)合當(dāng)前默認(rèn)下標(biāo)當(dāng)前綴。
//$param_uri變量值,結(jié)果為apikey=456appid=123secretkey=789×tamp=1389379498
$param_uri?=?http_build_query($params,'','');
echo?$param_uri;???//echo輸出結(jié)果為apikey=456appid=123secretkey=789×tamp=1389379498
//先使用調(diào)用hash_hmac方法加密,HMAC-SHA1算法。
//$secretKey為安全密鑰,$param_uri為要加密的明文。'sha1'是HMAC-SHA1算法。
//再調(diào)用base64_encode方法加密,base64_encode?使用?MIME?base64?對(duì)數(shù)據(jù)進(jìn)行編碼。
$sig?=?base64_encode(hash_hmac('sha1',?$param_uri,?$secretKey));
?
java:
1、用hashmap存儲(chǔ)元素,鍵值對(duì)方式。
MapString,?String?hashMap?=?new?HashMapString,?String(){
{
put("appid",?"123");
put("apikey",?"456");
put("secretKey",?"789");
put("timestamp",?"當(dāng)前UNIX?時(shí)間戳,秒數(shù),java中獲取");
}????????????
};
2、java中可以通過(guò)Timestamp獲得UNIX?時(shí)間戳。
3、然后對(duì)hashmap進(jìn)行升序排序。
4、然后寫一個(gè)方法遍歷hashmap,拼接成字符串格式為apikey=456appid=123secretkey=789timestamp=1389379498
然后對(duì)該字符串進(jìn)行encoded編碼,輸出格式為apikey=456appid=123secretkey=789×tamp=1389379498
5、通過(guò)java中HMAC-SHA1算法加密該字符串,$secretKey為安全密鑰。
6、再通過(guò)base64_encode加密第5步產(chǎn)生的字符串。這是最終sig結(jié)果。
按照你的要求編寫的Java程序如下:( 要注意的地方見(jiàn)語(yǔ)句后面的注釋)
import?java.awt.image.BufferedImage;import?java.awt.image.RenderedImage;import?java.io.File;import?java.io.IOException;import?javax.imageio.ImageIO;public?class?ImageWithArray?{?public?static?void?main(String[]?args)?{??//?讀取圖片到BufferedImage??BufferedImage?bf?=?readImage("c:\\tmp\\6\\female.png");//這里寫你要讀取的絕對(duì)路徑+文件名??//?將圖片轉(zhuǎn)換為二維數(shù)組??int[][]?rgbArray1?=?convertImageToArray(bf);??//?輸出圖片到指定文件??writeImageFromArray("c:\\tmp\\2.png",?"png",?rgbArray1);//這里寫你要輸出的絕對(duì)路徑+文件名??System.out.println("圖片輸出完畢!");?}?public?static?BufferedImage?readImage(String?imageFile){??File?file?=?new?File(imageFile);??BufferedImage?bf?=?null;??try?{???bf?=?ImageIO.read(file);??}?catch?(IOException?e)?{???e.printStackTrace();??}??return?bf;?}?public?static?int[][]?convertImageToArray(BufferedImage?bf)?{??//?獲取圖片寬度和高度??int?width?=?bf.getWidth();??int?height?=?bf.getHeight();??//?將圖片sRGB數(shù)據(jù)寫入一維數(shù)組??int[]?data?=?new?int[width*height];??bf.getRGB(0,?0,?width,?height,?data,?0,?width);??//?將一維數(shù)組轉(zhuǎn)換為為二維數(shù)組??int[][]?rgbArray?=?new?int[height][width];??for(int?i?=?0;?i??height;?i++)???for(int?j?=?0;?j??width;?j++)????rgbArray[i][j]?=?data[i*width?+?j];??return?rgbArray;?}?public?static?void?writeImageFromArray(String?imageFile,?String?type,?int[][]?rgbArray){??//?獲取數(shù)組寬度和高度??int?width?=?rgbArray[0].length;??int?height?=?rgbArray.length;??//?將二維數(shù)組轉(zhuǎn)換為一維數(shù)組??int[]?data?=?new?int[width*height];??for(int?i?=?0;?i??height;?i++)???for(int?j?=?0;?j??width;?j++)????data[i*width?+?j]?=?rgbArray[i][j];??//?將數(shù)據(jù)寫入BufferedImage??BufferedImage?bf?=?new?BufferedImage(width,?height,?BufferedImage.TYPE_INT_BGR);??bf.setRGB(0,?0,?width,?height,?data,?0,?width);??//?輸出圖片??try?{???File?file=?new?File(imageFile);???ImageIO.write((RenderedImage)bf,?type,?file);??}?catch?(IOException?e)?{???e.printStackTrace();??}?}}
運(yùn)行結(jié)果:
圖片輸出完畢!
原圖:
輸出圖:
沒(méi)法轉(zhuǎn)的,這個(gè)php中調(diào)用了不少外部對(duì)象,沒(méi)人能猜到那些是什么內(nèi)容的。