日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图片缩放自适应

發布時間:2025/7/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图片缩放自适应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按圖片比例預覽圖片

?我們先看一個例子,來自Win7系統的Windows照片查看器: ?

??

?從以上3張圖片可以知道,圖片一直在窗體中保持寬高比不變的前提下,最大縮放。首先我們自己想一下如果是自己手動做到這個效果,思維是怎樣判斷的。每個人的思維都不一樣,你要做的是用編程語言把你自己的思維方式表現出來。以下是我兩種思維方式:

一.

1.看到一張需要縮放的圖片時,大腦中大概得到寬高比,Proportion

2.得到一個窗口,我以窗口的高作為我最后縮放的高,根據圖片的比例虛構一下寬,跟窗口的寬的差別。

如果我腦海中虛構出來的寬比窗口的寬長的話,就如果以窗口的高作為圖片縮放的高的話,圖片按照比例窗口不能顯示。就那以窗口的寬作為最后縮放的寬,腦海中再虛構一遍。(圖2)。

如果我腦海中虛構出來的寬比窗口的寬短的話,就證明窗口能顯示按比例縮放之后的圖片(圖1)。

二.

1.將窗口的寬與圖片的寬的比例,窗口的高與圖片的高的比例,比較一下。也就是想一下圖片的形狀是矩形(寬>高),跟窗口的形狀有多大的差別。例如圖1跟圖2,很明顯知道圖1是寬度相差太大了,圖2的高相差太大。

2.將比例變化少的那個作為縮放后的長度。圖1以高最為最后縮放圖的高,圖2以寬作為最后縮放圖的寬。

?

(可能我的表達能力不是很好,大家可能還不明白,我把代碼貼出來,大家應該就會明白了。)

?

Code
?1Public?Class?ClsThumbnailClass?ClsThumbnail
?2????Private?m_def_width,?m_def_height?As?Integer?'圖片默認的寬高
?3????Private?m_win_width,?m_win_height?As?Integer?'窗口的寬高
?4
?5????Private?m_th_width,?m_th_height?As?Integer?'縮放之后的寬高
?6
?7????Private?m_Proportion?As?Double?'默認寬高比
?8
?9????Private?m_pro_w,?m_pro_h?As?Double?'圖片與窗口的寬比,高比
10
11????Sub?New()Sub?New(ByVal?defWidth?As?Integer,?ByVal?defHeight?As?Integer,?ByVal?winWidth?As?Integer,?ByVal?winHeigth?As?Integer)
12????????m_def_width?=?defWidth
13????????m_def_height?=?defHeight
14????????m_win_height?=?winHeigth
15????????m_win_width?=?winWidth
16????????'初始化屬性
17????End?Sub

18
19????Public?Function?getThumnnailBySize()Function?getThumnnailBySize()?As?Size
20????????'Call?ThPicture1()
21????????'第一種想法
22????????Call?ThPicture2()
23????????'第二種想法
24????????Dim?Psize?As?Size?=?New?Size(m_th_width,?m_th_height)
25????????Return?Psize
26????End?Function

27
28????Private?Sub?ThPicture1()Sub?ThPicture1()
29????????m_Proportion?=?m_def_width?/?m_def_height
30????????If?m_win_height?*?m_Proportion?<?m_win_width?Then
31????????????m_th_width?=?m_win_height?*?m_Proportion
32????????????m_th_height?=?m_win_height
33????????ElseIf?m_win_height?*?m_Proportion?>?m_win_width?Then
34????????????m_th_width?=?m_win_width
35????????????m_th_height?=?m_win_width?/?m_Proportion
36????????ElseIf?m_win_height?*?m_Proportion?=?m_win_width?Then
37????????????m_th_width?=?m_win_width
38????????????m_th_height?=?m_win_height
39????????End?If
40????End?Sub

41
42????Private?Sub?ThPicture2()Sub?ThPicture2()
43????????m_pro_w?=?m_win_width?/?m_def_width
44????????m_pro_h?=?m_win_height?/?m_def_height
45????????If?m_pro_w?>?m_pro_h?Then
46????????????m_th_width?=?m_def_width?*?m_pro_h
47????????????m_th_height?=?m_win_height
48????????ElseIf?m_pro_w?<?m_pro_h?Then
49????????????m_th_width?=?m_win_width
50????????????m_th_height?=?m_win_height?*?m_pro_w
51
52????????ElseIf?m_pro_w?=?m_pro_h?Then
53????????????m_th_width?=?m_win_width
54????????????m_th_height?=?m_win_height
55
56????????End?If
57
58
59????End?Sub

60End?Class

61

?

代碼我沒測試,自行測試,雖然在WinForm的編程中只需設計PictureBox的縮放模式為Zoom就可以輕松得到。但是在網頁中用來制作縮略圖還是有一點用處的。

?

?

?其實這個是我畢業設計那個播放器的視頻縮放自適應的功能,我只是換了一個方式寫出來,所以上面的代碼才沒測試。因為在播放器哪里已經測試過,只是上面用面向對象寫了出來,不知道有沒有什么問題,剛剛才學面向對象,第一次發代碼,大家見諒。昨晚都沒怎么看到書,師弟來了宿舍,聊天到2點多。

?嗚嗚,今天真的好黑,去飯堂買飯,居然還差兩個人就到我啦,阿姨居然說,不好意思啊,方盒賣完啦。我哭,只好去買個粉吃,買了回到宿舍一吃,冷的!痛苦。這個月的流量用完了,只能低速上網,博客退到下午才更新。。

轉載于:https://www.cnblogs.com/jielife/archive/2009/10/30/1593244.html

總結

以上是生活随笔為你收集整理的图片缩放自适应的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。