Новый взгляд на старые вещи

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 04:16:02

Страниц: [1] 2
Печать
Автор Тема: Передача изображения по BT  (Прочитано 707 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mr.Pihto    ↓ 
30 Сентябрь, 2010, 12:22:10
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

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

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()

клиент
Python

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))
чето там SymbianError: [Errno -28] KErrBadName
как вообще это правильно сделать? как принимать полную картинку независимо от её размера?
Записан
ivanscm    ↓ 
30 Сентябрь, 2010, 02:52:07 , спустя 2 часа 29 минут 57 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 0
Сообщений: 1123
Сила слова: 0

посылать отдельно размер :))
Записан

adw0rd    ↓ 
30 Сентябрь, 2010, 04:40:46 , спустя 1 час 48 минут 39 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

Image.open() принимает название файла?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Mr.Pihto    ↓ 
30 Сентябрь, 2010, 07:58:29 , спустя 3 часа 17 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

adw0rd, да... я просто незнаю как реализовать все это.. прошу помощи..
Записан
adw0rd    ↓ 
30 Сентябрь, 2010, 09:11:55 , спустя 1 час 13 минут 26 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

А ты кму название файла передаешь? Посмотри как еще можно передавать
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Mr.Pihto    ↓ 
30 Сентябрь, 2010, 11:44:26 , спустя 2 часа 32 минуты 31 секунду
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

где посмотреть.. у графикс.имейдж есть только 3 функции new, open и ещё какаято шляпа.. функции принимающей объект я не нашёл
Записан
adw0rd    ↓ 
01 Октябрь, 2010, 12:31:10 , спустя 46 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

где посмотреть
ну хотябы через dir() или через help()
 
Python

import Image
dir(Image)
help(Image)
 
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Mr.Pihto    ↓ 
01 Октябрь, 2010, 10:34:48 , спустя 10 часов 3 минуты 38 секунд
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

чето я не вижу там функции принимающей файловый объект..
Записан
Mr.Pihto    ↓ 
01 Октябрь, 2010, 02:56:47 , спустя 4 часа 21 минуту 59 секунд
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22

сделал так:
сервер
Python
import socket, threading, win32api, win32con, bluetooth, time
from PIL import ImageGrab, Image
srv = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
srv.bind(("",11))
srv.listen(3)
sock, addr = srv.accept()
im = ImageGrab.grab().quantize(colors=2, method=1)
im.save('C:\\temp.png', 'PNG')
f = open('C:\\temp.png', 'rb')
while 1:
    blk=f.read(1024)
    if not blk:
        break
    sock.send(blk)
    time.sleep(0.2)
f.close()
print 'file transfer done';
sock.close()

клиент
Python
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))
f=open('E:\\temp.png','wb')
while 1:
    data=sock.recv(1024)
    if not data:
        break
    f.write(data)
f.close()
print 'file received'
sock.close()

все работает вот только в клиенте после команды sock.recv(1024) вылетает ошибка и программа так и не доходит до print 'file received'
ошибка длинная... в конце написано
     data=self._sock.recv(n, f, cb)
error:(32, 'Broken pipe')
« Последнее редактирование: 01 Октябрь, 2010, 02:56:47 от Mr.Pihto » Записан
adw0rd    ↓ 
01 Октябрь, 2010, 06:04:18 , спустя 3 часа 7 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67


чето я не вижу там функции принимающей файловый объект..
я не знаю что за graphics.Image ты используешь, а PIL не подходит?
Спустя 2 минуты 6 секунд добавил
Если вместо
 
Python

while 1:
    data=sock.recv(1024)
    if not data:
        break
    f.write(data)
f.close()
 

сделать
 
Python

data=sock.recv(1024)
if not data:
    break
f.write(data)
f.close()
 

то вылетает ошибка? Если нет, то передавай вместо 1024 - корретное число
Спустя 26 секунд добавил
зы. с сокетами в питоне не приходилось работать, подсказываю чисто логически
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Mr.Pihto    ↓ 
02 Октябрь, 2010, 12:48:45 , спустя 6 часов 44 минуты 27 секунд
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22



чето я не вижу там функции принимающей файловый объект..
я не знаю что за graphics.Image ты используешь, а PIL не подходит?
в pys60 нет библиотеки PIL
Записан
Mr.Pihto    ↓ 
02 Октябрь, 2010, 12:57:02 , спустя 8 минут 17 секунд
НЕ ХУЕТА! ХУЕТА!
не выябывайся
Группа: Адекваты

Карма: 17
Сообщений: 1398
Сила слова: 1.22


Python

while 1:
    data=sock.recv(1024)
    if not data:
        break
    f.write(data)
f.close()
 

сделать
 
Python

data=sock.recv(1024)
if not data:
    break
f.write(data)
f.close()
 

то вылетает ошибка? Если нет, то передавай вместо 1024 - корретное число
Спустя 26 секунд добавил
зы. с сокетами в питоне не приходилось работать, подсказываю чисто логически
да, так ошибка не вылетает...  корректное число это как?
Записан
adw0rd    ↓ 
02 Октябрь, 2010, 01:03:59 , спустя 6 минут 57 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

например всего у тебя 100 байт, а ты требуешь 1024 байт
надо просить 100 байт, для этого надо знать сколько у тебя байт весит файл
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
phpdude    ↓ 
02 Октябрь, 2010, 10:12:39 , спустя 9 часов 8 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.65


например всего у тебя 100 байт, а ты требуешь 1024 байт
надо просить 100 байт, для этого надо знать сколько у тебя байт весит файл
сокеты не так работают мих, 1024 в данном случае - МАКСИМАЛЬНОЕ количество байт. а сколько придет - столько придет. хотя может в питоне по другому реализована логика сокетных приложений, но не думаю что они чтото новое придумали :D ибо смысла не имеет изобретательство в данном случае)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
adw0rd    ↓ 
02 Октябрь, 2010, 11:01:07 , спустя 48 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

Скорее всего ты прав, но проверять не буду :)
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: Sinkler, artoodetoo