crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V  < 1 2 3 4 5 > »   
Ответить в данную темуНачать новую тему
> Ошибка при использовании метода setPixel класса QImage, Python
zuze
  опции профиля:
сообщение 25.3.2013, 10:11
Сообщение #21


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 25.3.2013, 9:57) *
Вовсе нет, зачем нам хранить данные о цвете в двух местах (массиве и картинке)?


Двоичный файл - это не картинка, а набор байт который представляет собой картинку. И если бы у меня был двухмерный массив я смог бы построить картинку из этих данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 25.3.2013, 10:37
Сообщение #22


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


setPixel сохраняет считанный байт в картинку. Т.е. она уже строится без всякого массива.

Кстати, почему бы не использовать QImage.load() или QPixmap.load()?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 25.3.2013, 10:45
Сообщение #23


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 25.3.2013, 10:37) *
setPixel сохраняет считанный байт в картинку. Т.е. она уже строится без всякого массива.


Вы предлагаете зделать так?

im3.setPixel(px, py, QtGui.QColor(struct.unpack("B", fp.read(1)), struct.unpack("B", fp.read(1)), struct.unpack("B", fp.read(1)), 255).rgba())


Возникает ошибка:
TypeError: arguments did not match any overloaded call:
QColor(Qt.GlobalColor): argument 1 has unexpected type 'tuple'
QColor(int): argument 1 has unexpected type 'tuple'
QColor(QVariant): too many arguments
QColor(): too many arguments
QColor(int, int, int, int alpha=255): argument 1 has unexpected type 'tuple'
QColor(QString): argument 1 has unexpected type 'tuple'
QColor(QColor): argument 1 has unexpected type 'tuple'

Цитата(lanz @ 25.3.2013, 10:37) *
Кстати, почему бы не использовать QImage.load() или QPixmap.load()?


Так как у меня запрещено использовать загрузка файлов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 25.3.2013, 10:53
Сообщение #24


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Нет, если надо скачать три компоненты цвета, то проще сразу загружать блоками по 3.
color = struct.unpack ("BBB", fp.read(3))
im3.setPixel(px, py, QtGui.QColor(color[0], color[1], color[2], 255).rgba())

Почему запрещено использовать загрузку файлов? :lol:
fp.read загружает из файла же.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 25.3.2013, 10:59
Сообщение #25


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 25.3.2013, 10:53) *
Почему запрещено использовать загрузку файлов?


Так как нельзя использовать накопители.

Цитата(lanz @ 25.3.2013, 10:53) *
fp.read загружает из файла же.


Этот код в будущем будет заменён.


Цитата(lanz @ 25.3.2013, 10:53) *
Нет, если надо скачать три компоненты цвета, то проще сразу загружать блоками по 3.

color = struct.unpack ("BBB", fp.read(3))
im3.setPixel(px, py, QtGui.QColor(color[0], color[1], color[2], 255).rgba())


Мне нужно так:

Вы не правильно поняли, мне надо так:

color = struct.unpack ("BBB", fp.read(3))
im3.setPixel(px, py, QtGui.QColor(color[0], color[0], color[0], 255).rgba())


На второй итерации чтобы было:

color = struct.unpack ("BBB", fp.read(3))
im3.setPixel(px, py, QtGui.QColor(color[1], color[1], color[1], 255).rgba())


И так далее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.3.2013, 11:17
Сообщение #26


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(zuze @ 25.3.2013, 13:59) *
Так как нельзя использовать накопители.

в смысле ? )

ну и маппирование никто не отменял

Сообщение отредактировал Алексей1153 - 25.3.2013, 11:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 25.3.2013, 11:23
Сообщение #27


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 25.3.2013, 11:17) *
в смысле ? )


В примом смысле, где будет стоять программа их нету.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 25.3.2013, 11:57
Сообщение #28


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


http://docs.python.org/2/library/stringio.html
Например позволяет обращатся со строкой (массивом) как с файлом.
QBuffer позволяет использовать QByteArray как файл.

Цитата
Мне нужно так:
...
И так далее.


fp.read (3) на каждой итерации считывает следующие три байта. Поэтому color[0] на каждой итерации будет разным. Вы же его печатали на экран и видели как он изменяется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 25.3.2013, 12:29
Сообщение #29


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 25.3.2013, 11:57) *
fp.read (3) на каждой итерации считывает следующие три байта. Поэтому color[0] на каждой итерации будет разным. Вы же его печатали на экран и видели как он изменяется.


Я понял значит нужно так:

im3.setPixel(px, py, QtGui.QColor(bf[0], bf[0], bf[0], 255).rgba())


Но вот тут не понимаю, делаю такой код:

for j in range(0, 720, 1):
     for i in range(491, 0, -1):
          bf = struct.unpack("B", fp.read(1))

          px = 492 + i * math.cos(self.MyGradusToRadian(j/2))
          py = 492 + i * math.sin(self.MyGradusToRadian(j/2))

          im3.setPixel(px, py, QtGui.QColor(bf[0], bf[0], bf[0], 255).rgba())


Я думал j будет меняться от 0 до 719, а i будет менятся от 491 до 0. С итерацией 1. А i и j какие-то левые результаты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 25.3.2013, 12:43
Сообщение #30


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата(zuze @ 25.3.2013, 13:29) *
Я думал j будет меняться от 0 до 719, а i будет менятся от 491 до 0.

По идее так и должно быть. Какие левые результаты?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V  < 1 2 3 4 5 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 5:47