直播原始碼網站,點選圖片可進行任意方向旋轉功能
直播原始碼網站,點選圖片可進行任意方向旋轉功能實現的相關程式碼
一、使用PIL庫
在Python中, 實現turtle的圖片旋轉需要使用PIL庫, 該庫可通過pip安裝。
使用PIL的Image.open函式可以實現載入圖片; 使用ImageTk.PhotoImage可將PIL.Image物件轉換為tkinter使用的型別。
PIL與tkinter實現的顯示圖片的程式如下:
from tkinter import * from PIL import Image,ImageTk root=Tk() cv=Canvas(root,bg='black') cv.pack(side=TOP,expand=True,fill=BOTH) image=Image.open("bh.png","r") image=image.resize((100,100)) imtk=ImageTk.PhotoImage(image) id=cv.create_image(100,100,image=imtk) cv.after(20,animate) root.mainloop()
二、實現圖片旋轉
開啟冗長的turtle模組的原始碼, (讀了半天)找到了TurtleScreenBase類, 該類用於底層的繪製圖形等操作。程式的關鍵是使用自定義的函式替換turtle模組中原有的函式。
完整程式碼如下:
from turtle import * from turtle import TurtleScreenBase try: from PIL import Image,ImageTk except ImportError: Image=None images={} # 使用自定義的函式替換turtle模組中原有的函式 def _image(self,filename): img=Image.open(filename) im = ImageTk.PhotoImage(img) im.raw = img im.zoomcache = [None,None] return im def _createimage(self, image): "Create and return image item on canvas." id = self.cv.create_image(0, 0, image=image) return id def _drawimage(self, item, pos, image, angle=None,zoom=None): "Configure image item as to draw image object at position (x,y) on canvas)" w=self.window_width();h=self.window_height() if not (-h//2 < pos[1] < h//2\ and -w//2 <= -pos[0] < w//2): self.cv.itemconfig(item, image=self._blankimage()) # 清除影像 return prev=image if zoom: # zoomcache為列表, 格式為[<放大倍數>, <影像>], 用於儲存影像放大後的副本 if zoom == image.zoomcache[0]: image=image.zoomcache[1] else: raw=image.raw size=(int(raw.size[0] * zoom), int(raw.size[1] * zoom)) raw = raw.resize(size,resample=Image.BILINEAR) image=ImageTk.PhotoImage(raw) image.raw=raw prev.zoomcache=[zoom,image] if angle is not None: raw=image.raw image=ImageTk.PhotoImage(raw.rotate(angle)) image.raw=raw images[item]=image # 建立 img 的引用, 防止img消失 x, y = pos self.cv.coords(item, (x * self.xscale, -y * self.yscale)) self.cv.itemconfig(item, image=image) def register_shape(self, name, shape=None): if shape is None: if name.lower()[-3:] in (".gif","jpg","bmp","png"): shape = Shape("image", self._image(name)) else: raise TurtleGraphicsError("Bad arguments for register_shape.\n" + "Use help(register_shape)" ) # 從turtle模組複製的部分 elif isinstance(shape, tuple): shape = Shape("polygon", shape) ## else shape assumed to be Shape-instance self._shapes[name] = shape # turtle的_drawturtle方法, 當Turtle的形狀將要繪製時呼叫 def _drawturtle(self): """Manages the correct rendering of the turtle with respect to its shape, resizemode, stretch and tilt etc.""" # 從turtle模組複製的部分 screen = self.screen shape = screen._shapes[self.turtle.shapeIndex] ttype = shape._type titem = self.turtle._item if self._shown and screen._updatecounter == 0 and screen._tracing > 0: self._hidden_from_screen = False tshape = shape._data if ttype == "polygon": if self._resizemode == "noresize": w = 1 elif self._resizemode == "auto": w = self._pensize else: w =self._outlinewidth shape = self._polytrafo(self._getshapepoly(tshape)) fc, oc = self._fillcolor, self._pencolor screen._drawpoly(titem, shape, fill=fc, outline=oc, width=w, top=True) elif ttype == "image": # 形狀為影像時 screen._drawimage(titem, self._position, tshape, self.heading(),self._stretchfactor[0]) elif ttype == "compound": for item, (poly, fc, oc) in zip(titem, tshape): poly = self._polytrafo(self._getshapepoly(poly, True)) screen._drawpoly(item, poly, fill=self._cc(fc), outline=self._cc(oc), width=self._outlinewidth, top=True) else: if self._hidden_from_screen: return if ttype == "polygon": screen._drawpoly(titem, ((0, 0), (0, 0), (0, 0)), "", "") elif ttype == "image": screen._drawimage(titem, self._position, screen._shapes["blank"]._data) elif ttype == "compound": for item in titem: screen._drawpoly(item, ((0, 0), (0, 0), (0, 0)), "", "") self._hidden_from_screen = True if Image: TurtleScreenBase._image=_image TurtleScreenBase._createimage=_createimage TurtleScreenBase._drawimage=_drawimage TurtleScreen.register_shape=register_shape RawTurtle._drawturtle=_drawturtle scr=getscreen() scr.register_shape('blackhole.jpg') shape('blackhole.jpg') while True: forward(60) left(72) done()
以上就是 直播原始碼網站,點選圖片可進行任意方向旋轉功能實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2855993/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播網站原始碼,Android中點選圖片放大的簡單方法網站原始碼Android
- 直播開發app,VUE圖片裁剪,打碼,旋轉功能APPVue
- 直播原始碼網站,js處理圖片變形、方向、壓縮等原始碼網站JS
- 直播原始碼網站,任意更改底部圖示顏色原始碼網站
- 直播app系統原始碼,圖片Loading旋轉動畫效果APP原始碼動畫
- 視訊直播app原始碼,點選圖片放大再點選縮小APP原始碼
- 直播商城原始碼,利用Python將圖片批次改成任意格式原始碼Python
- 直播軟體原始碼,CSS3實現圖片立體旋轉動畫原始碼CSSS3動畫
- 影片直播原始碼,圖片選擇器ImagePicker原始碼
- 直播原始碼網站,點選分享按鈕,分享到各個渠道功能的實現原始碼網站
- 直播平臺原始碼,圖片放大瀏覽功能原始碼
- 直播軟體原始碼,設定懸浮窗並可進行任意位置的移動原始碼
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- 直播原始碼網站,點選分類調起選單欄並彈出原始碼網站
- 直播app系統原始碼,python pdf轉為圖片APP原始碼Python
- 旋轉圖片驗證
- 將圖片旋轉(這裡不是旋轉imageView)View
- 影片直播網站原始碼,圖片放大且有漸變色罩層出現網站原始碼
- 直播平臺開發,點開大圖後,任意點選圖片位置都可關閉當前放大效果
- app直播原始碼,uniapp點選按鈕 儲存頁面為圖片到本地APP原始碼
- 直播網站原始碼,點選EditText以外的區域,鍵盤隱藏消失網站原始碼
- 透過 cavnas 旋轉圖片
- php實現圖片旋轉PHP
- 短視訊直播原始碼,動態釋出時選擇圖片、上傳圖片原始碼
- 直播帶貨原始碼,圖片左上角或右上角點選返回按鈕原始碼
- 直播商城系統原始碼,點選按鈕 儲存頁面為圖片到本地原始碼
- 短視訊直播原始碼,自動對上傳的圖片進行識別原始碼
- app直播原始碼,RecycleView頁面的點選跳轉設計APP原始碼View
- 影片直播原始碼,載入gif圖片原始碼
- 直播原始碼網站,實現文字自動翻轉效果原始碼網站
- 滑鼠懸浮圖片旋轉效果
- CSS3圖片旋轉效果CSSS3
- 【Go語言繪圖】圖片的旋轉Go繪圖
- 直播系統app原始碼,藉助django 實現顯示圖片功能APP原始碼Django
- 影片直播系統原始碼,C語言實現圖片合成功能原始碼C語言
- 直播商城原始碼,實現商城客服聊天,傳送文字、圖片的功能原始碼
- iOS仿抖音點贊動畫、波浪圖、主張圖、3D旋轉、圖片處理、播放器等原始碼iOS動畫3D播放器原始碼
- 直播網站程式原始碼,採用Redis實現購物車功能網站原始碼Redis