2013-05-15 83 views
1

我正在忙着用pygame和WX進行一些自我學習項目,我正在努力提高自己的技能。我想在python 2.7.3中通過套接字服務器發送png,並將png加載到pygame中。 我已經確認我可以收到本地主機的PNG,但我不能加載我的PNG。pygame 1.9似乎沒有加載PNG

那是給這個麻煩的RDPC.py文件:

import os 
import sys 
import pygame 
from pygame.locals import * 
from threading import Thread 
import time 
import socket 
import shutil 
def recvFile(): 
    file = open("data2/screenshot.png","wb") 
    while 1: 
      data = s.recv(2048) 
      if not data: 
        break 
      file.write(data) 
    file.close() 
    shutil.copyfile('data2/screenshot.png', 'data2,screen.png') 
    image = pygame.image.load('data2/screen.png') 
    screen.blit(image,(0,0)) 
    pygame.display.flip() 

class RDPclient(object): 
    def main(self, rdpserver): 
     self.insert(rdpserver) 
    def insert(self, rdpserver): 
     done = False 
     while not done: 
      for event in pygame.event.get(): 
       x,y = pygame.mouse.get_pos() 
       if event.type == MOUSEBUTTONDOWN: 
        rdpserver.mouse(x,y) 
       elif event.type == MOUSEMOTION: 
        if event.type == MOUSEBUTTONDOWN: 
         self.mouseDragEvent(x,y) 
         self.mouseMoveEvent(x,y) 
       if (event.type == KEYDOWN): 
        rdpserver.keyboard(event) 
        if (event.type == KEYUP): 
         rdpserver.keyboard(event) 
        if (event.key == K_ESCAPE): 
         done = True 
    def mouseDownEvent(self,x,y): 
     pass 

    def mouseUpEvent(self,x,y): 
     pass 

    def mouseDragEvent(self,x,y): 
     pass 

    def mouseMoveEvent(self,x,y): 
     pass 
pygame.init() 
screen = pygame.display.set_mode((1024,768), pygame.RESIZABLE) 
white = (255, 255, 255) 
screen.fill(white) 
pygame.display.set_caption('PyRDP') 
pygame.mouse.set_visible(1) 
t_bytes = 1024*1024*1 
HOST = '127.0.0.1' 
PORT = 9999 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((HOST, PORT)) 
rec = Thread(target=recvFile) 
rec.start() 

只有上面的代碼recvFile功能是給我找麻煩。

如果您需要代碼的其他部分,請回發並儘快發佈。

+0

當你調用'shutil.copyfile'時,與你使用字符串''data2,screen.png''而不是''data2/screen.png''有什麼關係,但是嘗試加載它爲' 「數據2/screen.png''? – Haz

+0

這是一個錯誤,而試圖把代碼堆棧溢出。我嘗試了下面的建議,將所有客戶端文件放在屏幕截圖所在的位置。屏幕確實變白,但圖像未加載。 – AlexiK

回答

1

我也遇到了麻煩。 您需要將所有文件(圖像代碼)放在同一個地方,如文件夾或桌面。希望我幫助!

+0

'DEF recvFile(): 文件=打開( 「screenshot.png」, 「WB」) 而1: 數據= s.recv(2048) 如果沒有數據: 斷裂 file.write(數據) file.close() shutil.copyfile(「screenshot.png」,「screen.png」) image = pygame.image.load('screen.png') screen.blit(image,(0,0)) pygame.display.flip()'我將代碼更改爲這個,然後直到diddnt接收到pygame中的png – AlexiK

+0

即時接受你的awnswer,因爲這看起來確實解決了部分問題。 – AlexiK