介紹圖形影象處理的過程

2021-03-04 04:12:48 字數 4650 閱讀 4998

運用容易**(贊成png/jpg/gif**)

1.應用drawable物件

2.bitmap和bitmapfactory

bitmap代表一張位圖,bitmapdrawable裡封裝的**就是乙個bitmap物件。

bitmap與bitmapdrawable之間的轉換:

a.bitmapdrawable bd = new bitmapdrawable(bitmap);

b.bitmap bitmap = bd.getbitmap();

bitmap還興許經由過程createbitmap()[挖取、挖取進行matrix變換、根據和createscaledbitmap()[進行縮放]來獲取新位圖。

bitmapfactory是乙個器材類,從不合本源闡發取得bitmap

decodebytearray(byteb,int offset,int length):指定的位元組陣列綜合。

decodefile(string pathname):從pathname指定的檔案中分析、樹立。

decodefiledescriptor(filedescriptor fd):從fd對應的檔案中解析、構建。

decoderesource(resource r,int id):依照id從指定資本中分析、創設。

decodestream(inputstream is):從指定輸入流中綜合、創立。

bitmap的**:isrecycled-()是否已**;recycle()-脅迫收受接管本身。

要會見其他儲存路子(sdcard)裡面的**,都必要憑藉bitmapfactory。

※獲取/assets/目次下的全部檔案:

assetmanager assets = getasserts();

stringfiles = assets.list(「」);

inputstream assetfile = assets.open(files[i]);

若是**還未**,先逼迫**該**:

if(bitmapdrawable!=null&&!bitmapdrawable.getbitmap().isrecycled())

繪圖1.繪圖的基礎:canvas、paint等

canvas的繪製方法[ondraw(canvas canvas)]

draw------:

cliprect():剪下乙個矩形區域、clipregion():裁剪指定區域。

rotate()/scale()/translate()對canvas進行旋轉、縮放、移動。

paint:設定繪製風格(畫筆顏色、畫筆粗細、填充風格等)

setargb()/setcolor():設定顏色 setalpha():設定透明度

setantialias():是否抗鋸齒 setpatheffect(patheffect pe):路徑效果

setshader(shader shader):畫筆的填充效果 setshadowlayer():陰影

setstrokewidth(float width):畫筆的筆觸寬度

setstrokejoin(paint.join join):轉彎處的連線風格

setstyle(paint.style style):設定paint的填充風格[stroke/fill]

settextalign(paint.align align):設定繪製文字時的文字對齊方式

settextsize(float textsize):文字大小

setdither():防抖動 setmaskfilter():

embos**askfilter:

blurmaskfilter:

rectf

2.path類

path p = new path(); p.moveto(); p.li***o(); p.li***o(); p.close()

patheffect定義繪製效果

***posepatheffect

cornerpatheffect

dashpatheffect

discretepatheffect

pathdashpatheffect

sunpatheffect

path.addrect(rectf rectf,path.direction dir)

canvas.drawtextonpath()

3.繪製遊戲動畫

定時器timer(用handler傳遞訊息進行重繪)

通知view重繪可以呼叫invalidate(在ui執行緒中)或postinvalidate(在非ui執行緒中)。

new timer().schedule(new timertask(),long delay,long period});

採用雙緩衝實現畫圖板

bitmap bitmap = bitmap.createbitmap(width,height,config.argb_8888);

canvas canvas = new canvas(); canvas.setbitmap(bitmap);

paint paint = new paint(paint.dither_flag); paint.setcolor(color.red);

paint.setstyle(paint.style.stroke); paint.setstrokewidth(1);

paint.setantialias(true); paint.setdither(true);

觸控螢幕的拖動事件:

motionevent.action_down->path.moveto(event.getx(),event.gety())

motionevent.action_move->path.quadto(prex,prey,event.getx(),event.gety())

motionevent.action_up->canvas.drawpath(path,paint)

獲取螢幕的寬和高的**:

windowmanager windowmanager = getwindowmanager();

display display = windowmanager.getdefaultdisplay();

screenwidth/height = display.getwidth/height();

圖形特效處理

1.使用matrix控制變數

matrix是android提供的乙個矩陣工具類,本身不能對影象或元件進行變換,但可以結合其他api來控制圖形、組建的變換。

matrix控制影象或元件變換的步驟:

a.獲取matrix物件,可以新建立,也可以獲取其他物件內封裝的matrix。

matrix matrix = new matrix();

b.呼叫matrix的方法進行平移、旋轉、縮放、傾斜等。

matrix.reset();//重置

matrix.settranslate()/setskew()/setrotate()/setscale()//平移/傾斜/旋轉/縮放

c.將程式對 matrix所做的變換應用到指定影象或元件。

bitmap bitmap = bitmap.create(bitmap b,int x,int y,int width,int height,matrix m,boolean filter);

canvas.drawbitmap(bitmap,matrix,null[paint p]);

2.使用drawbitmapmesh扭曲影象

canvas提供了乙個drawbitmapmesh(bitmap b, int meshwidth, int meshheight, floatverts, int veroffset, int colors, int coloroffset, paint p)方法,該方法可以對bitmap進行扭曲。

b:原位圖、meshwidth:控制在橫向上把原位圖分成多少格、verts:

長度為(meshwidth+1)*(meshheight+1)*2的一維陣列,記錄扭曲後的點陣圖各頂點的位置,形式如(x0,y0)、(x1,y1)…、veroffset:控制陣列中從第幾個元素開始對於b進行扭曲。

3.使用shader填充圖形

shader:bitmapshader(位圖渲染)/***poseshader(混合[組合]渲染)/lineargradient(線性漸變渲染)/radialgradient(光束[圓形漸變]渲染)/sweepgradient(梯度[角度變換]渲染)等。

shader.tilemode.repeat/mirror(重複/映象)

逐幀(frame)動畫

1.animationdrawable與逐幀動畫

在xml資源檔案中定義,語法如下

android:onshot=[「true」|」false」]>

android:duration=」integer」 />

onshot:是否迴圈 true則不會迴圈,否則迴圈

也可以先建立animationdrawable,然後通過addframe(drawable frame,int duration)新增幀。通過imageview來顯示動畫。animationdrawable的start()和stop()來控制動畫的**和停止。

獲取animationdrawable的動畫物件:

---animationdrawable ad = (animationdrawable)imageview.getbackground();

圖形影象處理培訓總結

我覺得學習coreldraw軟體一門課程是很成功的。聯絡到我們的教學工作中,我們應該負起比較主要的責任。在學校裡有了太多的基礎課程,也許在剛開始的學習裡,他們還能夠保持著新鮮感,但是在學習之後,可以說再有新鮮感就是一件比較困難的事情了。其次,學生們沒有認識到這門課程的價值。他們有時會認為學習這門課程...

圖形影象處理課程標準

一 概述 1 課程性質 photoshop是adobe公司推出的一款目前非常流行 應用非常廣泛的 處理軟體。伴隨著計算機的普及和計算機在各行業的廣泛應用,photoshop發揮了越來越大的作用。計算機和數位相機的普及,使用者可以在家中進行簡單的 處理,這使得photoshop可以作為乙個應用軟體在所...

《計算機圖形影象處理Photoshop CS》教學反思

3 作品展覽是提高成功自信的保障 儘管時間緊張,但是必須在每週抽一點時間 或在課間 將學生自己的作品展示給學生互相瀏覽,讓他們感受自己的作品與別人的差別在 通過欣賞別人的優點來提高自己的不足,在找差距的同時還可以拓展學生的想像空間,一方面培養了學生興趣和創造力,提高了鑑賞能力 分析和解決問題的能力,...