Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2010 04:36:59

mr.pihto
От:
Зарегистрирован: 2010-08-29
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача изображения по BT

на компе сервер делает скрин и отсылает его клиенту на телефоне… только вот клиент его открыть не моежет…
сервер

import socket, win32api, win32con, bluetooth, time, StringIO
from PIL import ImageGrab, Image
srv = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
srv.bind(("",11))
srv.listen(3)
sock, addr = srv.accept()
output = StringIO.StringIO()
im = ImageGrab.grab().quantize(colors=2, method=0)
im.save(output, "PNG")
content = output.getvalue()
sock.send(content)
sock.close()
клиент
import appuifw, e32, socket, StringIO
from graphics import Image
sock = socket.socket(socket.AF_BT,socket.SOCK_STREAM)
sock.connect(("00:1f:81:00:00:01", 11))
buf = sock.recv(1024)
im = Image.new((240, 320))
im.clear(0xFFFFFF)
im = Image.open(StringIO.StringIO(buf))
im.save('E:\image.jpg')
sock.close()
ошибка вылетает на строке im = Image.open(StringIO.StringIO(buf))



Отредактировано (Сен. 25, 2010 04:37:28)

Офлайн

#2 Сен. 25, 2010 06:59:30

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Передача изображения по BT

Вы приняли всего один килобайт из картинки: buf = sock.recv(1024). Поищите на форуме, тема много раз обсуждалась.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Сен. 26, 2010 00:03:01

mr.pihto
От:
Зарегистрирован: 2010-08-29
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача изображения по BT

размер картинки 28672 байта.. попробовал sock.recv(28672) - ничего не изменилось SymbianError: KErrBadName



Офлайн

#4 Сен. 26, 2010 10:28:20

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Передача изображения по BT

mr.pihto
размер картинки 28672 байта.. попробовал sock.recv(28672) - ничего не изменилось SymbianError: KErrBadName
Извините, с Symbian не работал, но вроде graphics.Image.open - параметром принимает имя файла, а не файловый объект, поэтому видимо придется сбросить буфер во временный файл. Ну и: sock.recv(28672) - так не делают, лучше передать длину изображения, а потом принимать меньшими кусками.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Сен. 26, 2010 10:29:22)

Офлайн

#5 Сен. 26, 2010 15:37:25

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Передача изображения по BT

PooH
graphics.Image.open - параметром принимает имя файла, а не файловый объект, поэтому видимо придется сбросить буфер во временный файл.
Все именно так, записывайте изображение во временный файл, например на диск D, который специально для этого предназначен и создается в оперативной памяти….



Офлайн

#6 Сен. 26, 2010 22:27:50

mr.pihto
От:
Зарегистрирован: 2010-08-29
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача изображения по BT

на диск Д на телефоне? как это сделать?



Офлайн

#7 Сен. 28, 2010 23:24:16

mr.pihto
От:
Зарегистрирован: 2010-08-29
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача изображения по BT

начеркайте пару строчек кода пажалуйста



Офлайн

#8 Сен. 29, 2010 01:14:34

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Передача изображения по BT

import tempfile, если очень хочется.
А про сокеты – даже не смешно уже.

..bw



Отредактировано (Сен. 29, 2010 01:14:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version