這個問題涉及圖片呈現(xiàn)的一整套方案。歸納而言這個問題是:給定任意尺寸的圖片如何在任意尺寸分辨率的機(jī)器上顯示?并且能夠保持圖片原來的清晰度。一般采用如下方案來解決這個問題:

我們提供的服務(wù)有:網(wǎng)站設(shè)計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沿灘ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沿灘網(wǎng)站制作公司
1、首先給原圖片創(chuàng)建一塊內(nèi)存緩存副本。如果不創(chuàng)建緩存的話,那么任何一次圖片的剪切、縮放等操作都將丟失圖片信息,使得保持原有圖片的滋味那是不可能的。當(dāng)然對于一般的程序而言,這個操作只需要調(diào)用簡單的API即可完成。例如Android,只需要創(chuàng)建一個對應(yīng)圖片的Bitmap對象即可。
2、如果想要在設(shè)備顯示的初始化狀態(tài)圖片即為滿屏,那么必須調(diào)用相關(guān)API動態(tài)獲得設(shè)備的分辨率。然后按設(shè)備分辨率的大小對圖片進(jìn)行剪切并顯示到設(shè)備上。
注意:在獲得圖片分辨率后,如果分辨率大于圖片,那不用說,直接顯示圖片就好。但是如果小于圖片,此時有多種選擇。可以將圖片縮放至屏幕分辨率(圖片縱橫比可能失真)也可以選擇剪切圖片的一部分顯示到屏幕上。
3、對圖片進(jìn)行縮放或者移動
我們在圖片第一次顯示的時候無論是選擇縮放還是剪切,都要記錄下圖片被縮放的比例或者剪輯的范圍。這樣在用戶再次移動或者縮放的時候,根據(jù)之前的縮放比例和移動坐標(biāo),計算當(dāng)前應(yīng)該移動的位置和縮放比例。并且根據(jù)計算結(jié)果對緩存的圖片進(jìn)行剪輯并顯示到屏幕上。
其實整個過程可以概括為如下流程:
——圖片的初始縮放比例和顯示起點坐標(biāo)——用戶觸發(fā)縮放或者移動操作——計算新的圖片縮放比例和顯示起點坐標(biāo)——根據(jù)新的縮放比例和顯示起點坐標(biāo)剪輯緩存圖片并繪制到屏幕上......
那是肯定要被放大的,這是android 開發(fā)包的機(jī)制,自適應(yīng)屏幕,自動放大縮小圖片。
res文件夾下不是有“hdpi”,"ldpi","mdpi"三個文件夾嗎~你把相關(guān)何時分辨率的圖片放入相關(guān)文件夾,這樣圖片的放大縮小誤差率就減少了。
如果只想放一張圖片,而且不想讓圖片放大,你就用自帶的SDK自帶的9patch處理下吧。拉伸的內(nèi)容設(shè)置為透明,就行了。
其實如果圖片像素比較高的話是不會影響他的清晰度的,一般都是用的bitmap位圖,矩陣像素。所以你要求圖片放大后還是很清晰,那么只能要求原圖片的像素比較高,而并不能通過其他的操作來實現(xiàn)清晰度的變化!
是要編寫一個這樣的功能么,android提供的API里面一般圖片都是Bitmap,可以通過Canvas.drawBItMap的方法在View進(jìn)行圖片的繪制,在方法中需要進(jìn)行傳入一個類型為Matrix的參數(shù),設(shè)置Martrix的一些參數(shù)就可以進(jìn)行圖片的放大的繪制,這只是顯示,也就是MVC中的View層,然后通過提供的一些觸摸函數(shù)的重寫并實現(xiàn)自己需要的一些功能,如拖動,實際上就是改變BitMap繪制的位置。關(guān)于觸摸的處理和圖片的繪制可以在網(wǎng)上進(jìn)行一些教程的搜索,我就不羅列了,最終就是需要通過控制函數(shù)來改變圖片的繪制方式,這也許就是你所需要的功能。
先上效果圖
1.為了實現(xiàn)圖片的放到縮小,我選擇了 PhotoView 框架用于顯示圖片。
2.使用 Glide 框架加載圖片
3.實現(xiàn)原理:
通過自定義View繼承FrameLayout,以PhotoView作為背景,動態(tài)添加ImageView作為點。
4.主要分析:
1)標(biāo)簽隨圖片移動:通過實現(xiàn)PhotoView的OnMatrixChangedListener接口,監(jiān)聽圖片的位置及大小,動態(tài)設(shè)置標(biāo)簽的位置
2)點擊圖片任意位置,在此位置生成標(biāo)簽,
3)標(biāo)簽添加后,會導(dǎo)致布局重新測量,此時會導(dǎo)致已經(jīng)放大的圖片回到初始的位置及大小,在onLayout方法中重新設(shè)置photoView的Matrix。
矩形框的實現(xiàn)原理類似,難點就是在給icon添加了移動監(jiān)聽,保證icon可隨處移動
下面是源碼地址
使用位圖(Bitmap)再重新繪制遍
//原位圖
Bitmap btm1 = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.hh);
BitmapDrawable bd1=BitmapDrawable(btm1);
imageView.setBackgroundDrawable(bd1);
放大后 滑動時計算 圖片的邊是否在屏幕外,如果在屏幕外就可移動,比如 向上滑動,是想看圖片下面的部分,此時計算圖片的底邊是否在屏幕外,如果是,就可以向上移動圖片。
Scaletype的設(shè)置的方式包括:
1、在layout xml中定義android:scaleType="CENTER"
2、或在代碼中調(diào)用imageView.setScaleType(ImageView.ScaleType.CENTER);
擴(kuò)展資料:
根據(jù)位深度,可將位圖分為1、4、8、16、24及32位圖像等。每個像素使用的信息位數(shù)越多,可用的顏色就越多,顏色表現(xiàn)就越逼真,相應(yīng)的數(shù)據(jù)量越大。
例如,位深度為 1 的像素位圖只有兩個可能的值(黑色和白色),所以又稱為二值位圖。位深度為 8 的圖像有 2^8(即 256)個可能的值。位深度為 8 的灰度模式圖像有 256 個可能的灰色值。
RGB圖像由三個顏色通道組成。8 位/通道的 RGB 圖像中的每個通道有 256 個可能的值,這意味著該圖像有 1600 萬個以上可能的顏色值。
有時將帶有 8 位/通道 (bpc) 的 RGB 圖像稱作 24 位圖像(8 位 x 3 通道 = 24 位數(shù)據(jù)/像素)。通常將使用24位RGB組合數(shù)據(jù)位表示的的位圖稱為真彩色位圖。
參考資料來源:百度百科-Bitmap
當(dāng)前題目:android圖片放大,安卓圖片放大器
轉(zhuǎn)載注明:http://chinadenli.net/article25/dsgcgji.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、面包屑導(dǎo)航、網(wǎng)頁設(shè)計公司、App設(shè)計、服務(wù)器托管、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)