![java圖片處理解決方案_第1頁(yè)](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a321.gif)
![java圖片處理解決方案_第2頁(yè)](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a322.gif)
![java圖片處理解決方案_第3頁(yè)](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a323.gif)
![java圖片處理解決方案_第4頁(yè)](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a324.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
java圖?處理解決?案項(xiàng)?需要調(diào)整圖?服務(wù)器的解決?案,這次調(diào)整使?fastdfs存儲(chǔ)??件,也就是圖?,因?yàn)楝F(xiàn)在還沒(méi)有fastdfs的.net版的客服端,所以理所當(dāng)然把處理圖?放到了java這塊,使?java來(lái)處理圖?并且上傳到fastdfs上。之前還真沒(méi)?java整過(guò)圖?,因?yàn)?般沒(méi)這個(gè)需求,現(xiàn)在的需求是要根據(jù)前臺(tái)傳過(guò)來(lái)的尺?進(jìn)?圖?的縮略,?適應(yīng)縮放,留?,加?印操作。?開(kāi)始我使?jdk?帶的?套圖?處理庫(kù)來(lái)處理圖?,也就是sun的JPEGCodec,測(cè)試發(fā)現(xiàn)它會(huì)把所有的圖?全部轉(zhuǎn)換成jpeg格式,也就是說(shuō)把bmp,gif,png這種格式的圖?全部轉(zhuǎn)換成了jpeg格式,?且對(duì)于gif動(dòng)畫(huà)圖?縮放就只能對(duì)第?幀縮放,所以對(duì)于gif這種的的縮放完之后就“不動(dòng)了”。之后使?Graphics2D+ImageIO的?式,先判斷圖?的格式,然后縮放的時(shí)候強(qiáng)制的把圖?格式作為參數(shù)傳給ImageIO來(lái)處理,ImageIO.write(image,pic_type,out);但是對(duì)于gif動(dòng)畫(huà)圖?縮放也只對(duì)第?幀縮放,所以對(duì)于gif這種的的縮放完之后也是“不動(dòng)了”。最后在?上發(fā)現(xiàn)了?個(gè)架包--gif4j,它可以對(duì)gif動(dòng)畫(huà)圖?進(jìn)?縮放但是對(duì)于加?印和留?操作就?能為?了。最后在做壓?測(cè)試時(shí)發(fā)現(xiàn),使?這種?式(java的jdk+gif4j),特別是對(duì)于?圖的操作,?圖我這邊測(cè)試的是6~7M的圖?,發(fā)現(xiàn)?常?常耗cpu和內(nèi)存,當(dāng)然程序已經(jīng)優(yōu)化過(guò)的前提下測(cè)試,圖?都以流的?式進(jìn)?操作。但是這種cpu和內(nèi)存的消耗簡(jiǎn)直是開(kāi)玩笑了,要是需要處理的圖??多,每秒過(guò)百的請(qǐng)求服務(wù)器就得卡死,?且這種?式處理的圖?質(zhì)量不是特別?。在這種?案放棄之后,發(fā)現(xiàn)了ImageMagick。ImageMagick(TM)是?個(gè)免費(fèi)的創(chuàng)建、編輯、合成圖?的軟件。它可以讀取、轉(zhuǎn)換、寫(xiě)?多種格式的圖?。圖?切割、顏?替換、各種效果的應(yīng)?,圖?的旋轉(zhuǎn)、組利?Java的JNI(java本地調(diào)?),依賴(lài)操作系統(tǒng)提供的功能,操作批量、?圖?,這種?式效率?較?。然后當(dāng)然是開(kāi)搞,ImageMagick在windows和linux下的配置稍有不同,詳細(xì)情況可以參考:/script/index.php下?貼出使?JMagick調(diào)?Imagemagick進(jìn)?縮略的代碼。publicvoidresize1(Stringsrc,Stringdsec,intwidth,intheight,intquality){ImageInfoinfo=null;MagickImageimage=null;DimensionimageDim=null;MagickImagescaled=null;try{info=newImageInfo(src);info.setQuality(quality);image=newMagickImage(info);imageDim=image.getDimension();intsrcW=imageDim.width;intsrcH=imageDim.height;int[]i=PicUtil.getWandH(srcW,srcH,width,height,1);scaled=image.scaleImage(i[0],i[1]);scaled.setFileName(dsec);scaled.writeImage(info);}catch(Exceptione){e.printStackTrace();}finally{if(scaled!=null){scaled.destroyImages();}if(image!=null){image.destroyImages();}}}這?注意,使?完之后要釋放資源。if(scaled!=null){scaled.destroyImages();}if(image!=null){image.destroyImages();}否則會(huì)很傷,你懂的。加?印代碼:publicvoidaddWater(Stringsrc,Stringsrc_biao,Stringdsrc,intposition,intquality){ImageInfoinfo=null;ImageInfologo_info=null;MagickImageimage=null;MagickImagelogo_image=null;DimensionimageDim=null;Dimensionlogo_imageDim=null;//MagickImagecompositeimage=null;try{info=newImageInfo(src);info.setQuality(quality);image=newMagickImage(info);imageDim=image.getDimension();logo_info=newImageInfo(src_biao);logo_image=newMagickImage(logo_info);logo_imageDim=logo_image.getDimension();int[]ii=WaterPosition.position(position,imageDim.width,logo_imageDim.width,imageDim.height,logo_imageDim.height);positeImage(CompositeOperator.AtopCompositeOp,logo_image,ii[0],ii[1]);image.setFileName(dsrc);image.writeImage(info);}catch(Exceptione){e.printStackTrace();}finally{if(logo_image!=null){logo_image.destroyImages();}if(image!=null){image.destroyImages();}}}代碼都整完之后,進(jìn)?壓?測(cè)試,問(wèn)題出來(lái)了,java調(diào)?JNI的?式存在內(nèi)存隱患,?于原因,可以?上查查?,F(xiàn)在的情況就是如果可以10天半個(gè)?重啟下服務(wù),那沒(méi)問(wèn)題,但是如果長(zhǎng)時(shí)間的跑著服務(wù),它會(huì)把內(nèi)存耗盡,然后死掉。很郁悶,是吧,我也很郁悶。但我想做就做個(gè)NB點(diǎn)的吧,然后發(fā)現(xiàn)了GraphicsMagick+im4java這種?式。具體的不介紹了,?上資料很少,例?代碼更少,我在這?貼?段,僅供參考??s放代碼:publicvoidresize1(Stringsrc,Stringdsec,into_width,into_heigh,intwidth,intheight,doublequality){int[]i=PicUtil.getWandH(o_width,o_heigh,width,height,1);ConvertCmdcmd=newConvertCmd(true);IMOperationop=newIMOperation();op.addImage(src);op.scale(i[0],i[1]);op.quality(quality);op.addImage(dsec);try{cmd.run(op);}catch(Exceptione){log.error(e,e);}}加??。簆ublicvoidaddWater(Stringsrc,Stringsrc_biao,Stringdsrc,intposition,doublequality){CompositeCmdcmd=newCompositeCmd(true);IMOperationop=newIMOperation();op.gravity(WaterPosit
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 比的綜合運(yùn)用-(專(zhuān)題練習(xí))-數(shù)學(xué)六年級(jí)下冊(cè)蘇教版
- 2025年排風(fēng)扇項(xiàng)目可行性研究報(bào)告
- 2025年勞動(dòng)合同續(xù)簽總結(jié)報(bào)告模板
- 2025年氯化丁基橡膠瓶塞行業(yè)深度研究分析報(bào)告
- 2025年中國(guó)多級(jí)離心泵行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資前景展望報(bào)告
- 中國(guó)數(shù)字閱讀APP行業(yè)投資分析及發(fā)展戰(zhàn)略咨詢(xún)報(bào)告
- 高中貧困生補(bǔ)助申請(qǐng)書(shū)
- 2025年土狗罐頭行業(yè)深度研究分析報(bào)告
- 勞動(dòng)仲裁反訴申請(qǐng)書(shū)
- 異松油烯行業(yè)市場(chǎng)發(fā)展及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 全球變暖對(duì)工業(yè)企業(yè)的影響
- 《中醫(yī)藥健康知識(shí)講座》課件
- 2024年中國(guó)陪診服務(wù)行業(yè)市場(chǎng)發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告-智研咨詢(xún)重磅發(fā)布
- 藝術(shù)欣賞與實(shí)踐(高職)全套教學(xué)課件
- 轉(zhuǎn)基因調(diào)查分析報(bào)告
- 英語(yǔ)-時(shí)文閱讀-7年級(jí)(8篇)
- 只有偏執(zhí)狂才能生存讀書(shū)心得
- 數(shù)據(jù)挖掘(第2版)全套教學(xué)課件
- 產(chǎn)學(xué)研融合創(chuàng)新合作機(jī)制
- 胃早癌-經(jīng)典課件
- 安裝門(mén)窗施工方案
評(píng)論
0/150
提交評(píng)論