<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pygame模組用於變換Surface,Surface變換是一種移動或調整畫素大小的操作。所有這些函數都是對一個Surface進行操作, 並將結果返回一個新的Surface。
有些變換被認為是破壞性的。這意味著每次執行這些變換都會丟失畫素資料。常見的例子是調整大小和旋轉。出於這個原因, 重新變換原始Surface比繼續多次變換影象要好。(例如, 假設您正在製作一個彈跳彈簧的動畫, 它將膨脹和收縮。如果您將尺寸變化逐步應用於之前的影象, 您將失去細節。相反, 總是從原始影象開始, 然後縮放到所需的大小。)
下面看一組簡單的演示範例:
import pygame #引入pygame中所有常數,比如 QUIT from pygame.locals import * pygame.init() screen = pygame.display.set_mode((500,250)) pygame.display.set_caption('pygame transform') #載入一張圖片(455*191) image_surface = pygame.image.load("sky_shoot/img/playerShip1_orange.png").convert() image_new = pygame.transform.scale(image_surface,(100,75)) # 檢視新生成的圖片的物件型別 #print(type(image_new)) # 對新生成的影象進行旋轉至45度 image_1 =pygame.transform.rotate(image_new,45) # 使用rotozoom() 旋轉 0 度,將影象縮小0.5倍 image_2 = pygame.transform.rotozoom(image_1,0,0.5) while True: for event in pygame.event.get(): if event.type == QUIT: exit() # 將最後生成的image_2新增到顯示螢幕上 screen.blit(image_2,(0,0)) pygame.display.update()
程式的執行結果如下:
翻轉Surface
flip(Surface,xbool,ybool)->Surface
此功能可以垂直、水平或同時翻轉一個Surface。翻轉Surface是非破壞性的, 並返回一個具有相同尺寸的新Surface。
調整到新的解析度
scale(Surface, (width, height), DesSurface=None)->Surface
將Surface調整為新的解析度。這是一個不對結果進行取樣的快速縮放操作。可以使用一個可選的目標Surface, 而不是讓它建立一個新的Surface。如果你想重複縮放一些東西, 這樣會更快。但是, 目標Surface的大小必須與傳入的(寬、高)相同。而且目標Surface必須是相同的格式。
rotate(surface, angle) -> Surface
未經過濾的逆時針旋轉。角度引數代表度數, 可以是任何浮點值。負的角度值將順時針旋轉。除非以90度為增量旋轉, 否則影象將被墊大以保持新的尺寸。如果影象有象素, 填充區域將是透明的。否則, pygame將選擇與Surface colorkey或topleft畫素值相匹配的顏色。
rotozoom(surface, angle, scale) -> Surface
這是一個結合了縮放和旋轉的變換。得到的Surface是一個過濾後的32位元Surface。刻度引數是一個浮點數, 將乘以當前的解析度。角度引數是一個浮點值, 代表要旋轉的逆時針度數。負的旋轉角度將順時針旋轉。
scale2x(surface, dest_surface=None) -> Surface
這將返回一個新的影象, 其大小是原來的兩倍。它使用AdvanceMAME Scale2X演演算法, 對點陣圖圖形進行 "無鋸齒 "縮放。這實際上只對純色的簡單影象有影響。在攝影和反鋸齒影象上, 它將看起來像一個普通的未經過濾的規模。可以使用一個可選的目標Surface, 而不是讓它建立一個新的Surface。如果您想重複縮放某些Surface, 這樣做會更快。但是目標Surface的大小必須是傳入的源Surface的兩倍。而且目標Surface必須是相同的格式。
平滑地縮放一個任意大小的Surface。
smoothscale(surface, size, dest_surface=None) -> Surface
使用兩種不同的演演算法之一來按需縮放輸入Surface的每個尺寸。為了縮小,輸出畫素是它們覆蓋的顏色的面積平均值。為了擴充套件,使用雙線性濾波器。對於x86-64和i686體系結構,包含了優化的 MMX 例程,它們的執行速度比其他計算機型別快得多。大小是2個數位的序列(寬度,高度)。此功能僅適用於24位元或32位元Surface。如果輸入Surface位深度小於24,則將引發異常。pygame 1.8中的新功能。
返回正在使用的smoothscale濾波器版本。‘GENERIC’, ‘MMX’, 或 ‘SSE’。
get_smoothscale_backend() -> string
顯示平滑縮放是否正在使用 MMX
或 SSE
加速。如果沒有可用的加速度,則返回“ GENERIC”。對於x86處理器,要在執行時確定要使用的加速級別。該函數用於pygame的測試和偵錯。
將平滑尺度過濾器版本設定為:“GENERIC”、"MMX "或 "SSE "之一。‘GENERIC’, ‘MMX’, 或 ‘SSE’.
set_smoothscale_backend(backend) -> None
設定平滑比例加速度。採用字串引數。值“ GENERIC”將關閉加速。“ MMX” 僅使用 MMX 指令。'SSE’也允許 SSE 擴充套件。如果當前處理器無法識別或不支援型別,則會引發值錯誤。這個函數是為了pygame測試和偵錯而提供的。如果 smoothscale 導致無效指令錯誤, 那麼這是一個 pygame/SDL 錯誤, 應該被報告。僅將此函數用作臨時修復。
獲取一個去掉內部區域的影象副本。
chop(surface, rect) -> Surface
提取影象的一部分。刪除給定矩形區域周圍的所有垂直和水平畫素。然後將角區域(矩形的對角線)合併。此操作不會改變原始影象)。NOTE
:如果需要“裁切”來返回rect中影象的一部分,則可以使用rect剪下到新Surface或複製次Surface。
尋邊
laplacian(surface, dest_surface=None) -> Surface
使用大寫字母演演算法來尋找Surface的邊緣。pygame 1.8中的新功能。
從許多Surface中找出平均Surface。
average_surfaces(surfaces, dest_surface=None, palette_colors=1) -> Surface
取一個Surface的序列, 並返回每個Surface的平均顏色的Surface。palette_colors-如果為真, 我們對調色盤中的顏色進行平均, 否則我們對畫素值進行平均。如果Surface實際上是灰度顏色, 而不是調色盤顏色, 這很有用。注意, 這個函數目前不能正確處理使用Surface的調色盤。pygame 1.8中的新功能。pygame 1.9的新功能: palette_colors
引數
找到Surface的平均顏色
average_color(surface, rect=None) -> Color
查詢Surface或矩形指定的Surface區域的平均顏色, 並以顏色返回。
查詢Surface中哪些畫素和多少畫素在 "search_color "或 "search_surf "的閾值之內。
threshold(dest_surface, surface, search_color, threshold=(0, 0, 0, 0), set_color=(0, 0, 0, 0), set_behavior=1, search_surf=None, inverse_set=False) -> num_threshold_pixels
這個多功能的函數可以用於在接近 "search_color "的 "surf "中查詢顏色, 或者接近單獨的 "search_surf "中的顏色。它也可以用來將匹配或不匹配的畫素轉移到’dest_surf’中。預設情況下, 它將’dest_surf’中所有不在閾值內的畫素都改為set_color。
如果inverse_set設定為True, 則在閾值內的畫素會被改變為set_color。如果給定了可選的’search_surf’Surface, 它被用來針對而不是指定的’set_color’進行閾值化。也就是說, 它將在’surf’中找到每一個在’search_surf’相同座標的畫素的’閾值’內的畫素。
Parameters:
dest_surf(pygame.Surface或**None)-我們正在更改的Surface。參見“ set_behavior”。如果計數(set_behavior為0),則應為None。
surf(pygame.Surface)-我們正在檢視的Surface。
search_color(pygame.Color)-我們正在尋找的顏色。
threshold(pygame.Color)-在距search_color(或search_surf)距離之內。您可以使用閾值(r,g,b,a),其中r,g,b可以具有不同的閾值。因此,您可以根據需要使用r閾值40和藍色閾值2。
set_color(pygame.Color或**None)-我們在dest_surf中設定的顏色。
set_behavior(int)-set_behavior=1 (預設)。dest_surface中的畫素將被改為’set_color’。set_behavior=0 我們不改變’dest_surf’, 只是計數。讓dest_surf=None。set_behavior=2在’dest_surf’中設定的畫素將從’surf’。
search_surf(pygame.Surface或**None)-search_surf=None(預設)。用’search_color’代替搜尋。search_surf=Surface。看’search_surf’中的顏色, 而不是使用’search_color’。
inverse_set(bool)-False, 預設值。閾值外的畫素會被改變。True, 在閾值內的畫素被改變。
Return type:int
Returns:
與“search_color”或search_surf相比,“surf”中“閾值”內的畫素數。search_surf.
Examples:請參閱閾值測試以獲取完整的範例
def test_threshold_dest_surf_not_change(self): """ the pixels within the threshold. All pixels not within threshold are changed to set_color. So there should be none changed in this test. """ (w, h) = size = (32, 32) threshold = (20, 20, 20, 20) original_color = (25, 25, 25, 25) original_dest_color = (65, 65, 65, 55) threshold_color = (10, 10, 10, 10) set_color = (255, 10, 10, 10) surf = pygame.Surface(size, pygame.SRCALPHA, 32) dest_surf = pygame.Surface(size, pygame.SRCALPHA, 32) search_surf = pygame.Surface(size, pygame.SRCALPHA, 32) surf.fill(original_color) search_surf.fill(threshold_color) dest_surf.fill(original_dest_color) # set_behavior=1, set dest_surface from set_color. # all within threshold of third_surface, so no color is set. THRESHOLD_BEHAVIOR_FROM_SEARCH_COLOR = 1 pixels_within_threshold = pygame.transform.threshold( dest_surface=dest_surf, surface=surf, search_color=None, threshold=threshold, set_color=set_color, set_behavior=THRESHOLD_BEHAVIOR_FROM_SEARCH_COLOR, search_surf=search_surf, ) # # Return, of pixels within threshold is correct self.assertEqual(w * h, pixels_within_threshold) # # Size of dest surface is correct dest_rect = dest_surf.get_rect() dest_size = dest_rect.size self.assertEqual(size, dest_size) # The color is not the change_color specified for every pixel As all # pixels are within threshold for pt in test_utils.rect_area_pts(dest_rect): self.assertNotEqual(dest_surf.get_at(pt), set_color) self.assertEqual(dest_surf.get_at(pt), original_dest_color)
到此這篇關於Pygame transform模組入門介紹的文章就介紹到這了,更多相關Pygame transform模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45