Jen

Windows Phone 7.5 學習筆記 - 圖片處理的小技巧

萬丈大樓平地起,基本功練得好,不怕大樓被震倒! 最近在 Windows Phone 做圖片處理時,剛好看到一篇文章,研讀一下,把心得做個整理,然後納入「最重要的小事」系列文章。

原文的內容大綱: 
  • JPG 跟 PNG 的差異
  • Resource 跟 Content 的差異
  • 圖片的非同步處理
  • 圖片快取
  • BitmapCreateOptions
  • 自訂解碼
  • 縮減取樣 
[more]
JPG 跟 PNG 的差異
JPG 只能用來不透明的圖,PNG 用來做透明的圖,你可能會認為,乾脆都用PNG 做圖就好啦,省得麻煩,但在 Windows Phone OS 裏,對 JPG 解碼效能會比 PNG 來的好,所以站在優化的角度來看,在規劃設計 App 的時候,最好就要定義出哪些圖是需要透明的,而不需要透明的圖都用 JPG ,以節省 OS 的資源。
Resource 跟 Content 的差異
你把一些圖檔或靜態檔案加到 Windows Phone 的 Solution 時,預設的 「Build Action」是 Resource。 如果你從 Bin 資料夾把 xap 副檔名改名為 zip,然後解壓縮,你只會看到把 Build Action 設為 Content 的圖檔(或檔案)。簡單的說,把圖檔的 Build Action 設為 Resource 的話,編譯之後會一起 embed 到 dll 裏面去,而設為 Content ,則會被檔案實體檔案存在手機的 Disk 裏面去。
這樣有什麼不同呢? 如果把所有的圖檔一起 embed 到 dll 裏面去,dll 檔案會變大,應用程式一開始載入到記憶體的時候會比較慢,但也因為已經載到記憶體,執行時讀取檔會比較快。那如果不是 embed 到 dll 去,相對的檔案比較小,一開始載入記憶比較快,但讀取圖檔時,就會有個 Disk I/O 的 battleneck,會稍為比較慢。
在使用上會有點不一樣:

設為 Content : <Image Source="/ImagesAsContent/smiley1.png" /> 
設為 Resource : <Image Source="..\ImagesAsResource\smiley3.png" /> 
圖片的非同步處理
在做圖片處理,要跟 BitmapImage 這個類別混熟一點,它常會做一些你看不到的事情,例如 JPG 及 PNG Decode 的背景作業,不用自已再去寫一些用 Thread 去處理讀圖檔的程式碼。
原文中有提到 2 種使用方式:
  • BitmapImage.UriSource = uriSource; // 透過 URI 做非同步讀圖檔的動作
  • BitmapImage.SetSource(stream);     // 同步讀取 Stream 
BitmapImage 還有一些事件需要知道,
非同步讀取圖檔的時候:
  • 失敗的時候會觸發 ImageFailed 事件
  • 成功的時候會觸發 ImageOpened 事件
同步讀取圖檔的時候:
  • 失敗的時候會丟出 Exception。
  • 成功的時候並不會觸發 ImageOpened 事件
圖片快取
有圖片快取的好處是可以避免不必要的重複下載及重複解碼。當你把 Image 這個 Control 移掉之後,原本指給 Image 的 BitmapImage 依舊還在記憶體快取中,並沒有跟著 Image 這個 Control 一起消失掉,會佔著一部分的記憶體,只要你確定這個 BitmapImage 沒有需要再使用的話,是可以用下面這個方式把它從記憶體中移除。 
BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;
BitmapCreateOptions
查一下 MSDN BitmapCreateOptions 會有三個舉例的值,用來指定你要用什麼樣的方式來產生圖檔,
  • DelayCreation (預設值)
    • 當圖出現在「可視範圍」才會被畫出來,假設你有個 ListBox,當圖出現在使用者看得到的地方,才會被畫出來。
  • None
    • 不管圖有沒有出現在可視範圍,直接都先把圖畫出來。
  • IgnoreImageCache
    • 當圖出現在「可視範圍」時,再畫一次。上面兩個是只畫一次,有需要的話就會從 Cache 中抓圖出來,但這個選擇是不會從 Cache 抓圖,只要出現在「可視範圍」就再畫一次,也就是說你的記憶體會一直爆增、爆增。通常用在測試期間才會使用這個選項,如果上 App Hub ,我想會被退件吧。
解碼
預設 Windows Phone 會用圖片原本的解析度來處理它,但很多時候,我們的原圖會很大,而在手機上會來的比原圖小很多,假設你在網路上有張 500x500 的圖,下載到手機記憶體後縮成了 100x100,最後顯示,這樣的動作會浪費不少記憶體及手機資源,不建議這麼做。 Windows Phone 提供了PictureDecoder API 讓你在接 stream 的時候就可以做縮圖,不會浪費記憶體: 
image.Source = PictureDecoder.DecodeJpeg(jpgStream, 192, 256);
  
縮減取樣
在 Windows Phone 7 所有的元素都不能超過 2048x2048 的大小,只要任何一邊超過2048,就會被剪掉,造成無法顯示完整的圖檔。為了避免這樣事情的發生,Windows Phone 7 有提供自動縮減取樣的機制,只要任何一邊超過 2048 便會自動按比例縮小到 2 邊都不超過 2048。只有在 Windows Phone 才有,Silverlight on Desktop 就沒有這樣的限制。
現學現賣
記得有很多吉他的教材在每個單元結束後都會有個現學現賣,我也來個寫簡單的練習範例, 裏面會有兩個專案,一個是 WebSite ,專門提供 JSON 資料及圖片,一個則是 Windows Phone 的專案,我把它Commit 到 GitHub 上,有興趣再去看看吧。
  • WebSite 有 2 個 Service:
    • ~/Source/GetTech : 取得十幾筆帶有圖檔檔名的 JSON 資料。
    • ~/Source/GetImage?name={圖檔檔名} : 透過傳入的圖檔檔名,回傳一張圖檔。
       
  • Windows Phone 專案:
    • ~/Converts/ImageConvert 類別:包含上面所提到的 CreationOption、ImageFaild ...等等屬性及事件的用法。
    • MainPage.xaml 的 31 ~ 39 行放一個 Timer ,用來顯示記憶體用量的變化,可以試試各種 CreationOption 所造成的影響。
參考文章:

13 意見:

  匿名

2013年2月10日 上午11:25

5. The objective is to arrange your passions as carefully as possible with your online promotion company.
The race is becoming even more challenging with
the passing of each day. Naturally, they will
flock to your competitor who does. Organic SEO uses valid and safe techniques to
rank your site for its keyword. This is the best part to
ensure complete uniqueness to each of the websites.
Instead, the developer should concentrate on the functions mentioned
in this article first, as they are the basis for further extension of the Word
- Press header file. There are many tools online to help you research relevant keywords, such as the Google Adwords Keyword Tool.
Moreover, some companies are not able to get the desired results and their techniques might even have bad effects on the business's website. ) of links. They want to know things about how to create effective copy, general marketing tips and maybe even stuff about social media. Still hanging on. Moving your hosting to a nearby country such as Canada or an offshore Caribbean host may provide the same latency times, but reduce the risk of having your website brought down by a mistake. It's more control than you get In many backlinks and every element of these controls allow you to
link a bit more than he would be out of control.
Learn from other people's mistakes and experiences rather than destroying your own skills and wasting your time on experiments. G) SEO basics -Image 6: Open Google. Online Advertising and SEO Marketing. A person can find all sorts of products available at various prices on the internet. Such companies know the best about industry and market trends. Addition and updation of fresh content always leads to arrival of increased traffic to your websites.
Have a look at my website ... visit the following internet site

  匿名

2013年2月14日 上午2:56

This piece of writing is in fact a fastidious one
it assists new web visitors, who are wishing in favor of blogging.


Feel free to surf to my web page cash advance in richmond va
My site :: instant approval payday loans

  匿名

2013年2月17日 上午10:31

The most important thing to know when you are selling an account is where
you are going to sell. A look into some of the best Star Wars
apps to be found on i - Tunes, including games, fun soundboards, books, and more.

In our next article, we'll be tackling using SNES4i - Phone to do exactly that - play those old favorites, like Chono Trigger, Super Ghouls and Ghosts, or even Super Mario Bros 3.

Visit my blog :: spiele spielen

  匿名

2013年2月27日 上午4:35

The fаct that Toyοtа chοsе tο upgrаde the exterior
styling, interioг qualіty and intегiоr rоominess οf thе redesigned 2012 Yaris hаtchback rather than upgraԁing the powertrain sауѕ a lot about how Toyota viewѕ the neeԁs of small cаr buуerѕ.

(Cheсk out the artіcle: What's Really Out There in the Night Sky to see how some celestial objects appear at different EM frequencies. The Public Radio Tuner from American Public Media may be one of the best radio applications you can get.

Also visit my web site: internetradio

  匿名

2013年2月27日 下午11:52

My partner and I stumbled over here different web page and thought I should check things out.

I like what I see so now i am following you. Look
forward to going over your web page again.

my website :: linked webpage
my web page - http://www.auditorsource.com/blogs/18933/2149...rketing-th

  匿名

2013年3月4日 上午2:52

Dadurch kann die Masse nicht aufgenommen werden,
während sie die Verdauung passiert, wodurch eine Gewichtsreduktion erreicht wird.
People can control their blood sugar levels regularly according madhunashini
Vati. Die Acai Beeren kommen ursprünglich aus dem Regenwald
des Amazonas und dort stellen diese Früchte seit Jahrzehnten eine signifikante Zutat des Essens der Indianer
dar.

Also visit my website; Going Listed Here
my site: http://www.bukmark.net

  匿名

2013年4月2日 上午1:53

The second is a multiple choice list of questions to choose
from where the users should be restricted to choosing only one
question. These types can be taken with you on a
road trip or in your RV, or they can just be easily moved around the house.
The key is to have a clear understanding of the market so the money spent on broadcast advertising isn't wasted.

my webpage http://youxclip.com/

  匿名

2013年4月9日 上午6:41

In most cases they are, but when it comes to updates, patches, etc to
the mmorpgs. Port forwarding lets you specify which ports
the game needs to perform at it's best. It is recommended that the golfers select those putters with which the golfers feel good and works well with their gaming pattern.

my web blog; dcnlod.ssu.ac.kr

  匿名

2013年4月25日 上午6:45

Whats up! I simply wish to give an enormous thumbs up for the good
information you have got here on this post. I will probably be coming back to your blog for
extra soon.

Also visit my web-site ... SEM

  匿名

2013年5月23日 上午6:44

Good day! I simply wish to give a huge thumbs up for the
great data you’ve gotten here on this post.

I will probably be coming again to your weblog for extra
soon.

Here is my blog - 自然排名

  匿名

2013年5月23日 上午7:35

Good day! I simply wish to give a huge thumbs up for the
nice data you may have right here on this post. I will probably be coming again
to your blog for more soon.

Look at my page: Web Ranking

  匿名

2013年5月23日 上午8:06

Hi there! I simply wish to give a huge thumbs up for the nice
information you will have right here on this post. I will
likely be coming again to your blog for extra soon.


My blog post; Search Engine Optimization

  匿名

2013年5月28日 下午10:53

Hi there! I simply want to give an enormous thumbs up for the great info you have right here
on this post. I shall be coming again to your weblog for extra soon.


Take a look at my site ... country music female artists 2009