crossplatform.ru

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

6 страниц V  « < 4 5 6  
Ответить в данную темуНачать новую тему
> Ошибка при использовании метода setPixel класса QImage, Python
lanz
  опции профиля:
сообщение 27.3.2013, 10:12
Сообщение #51


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

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

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




Репутация:   8  


В функции f1

for i in range(491, 0, -1):


Происходит загрузка 491 элемента из каждой строки (491...1) поэтому картинка при загрузке смещается.
Надо начинать от 492.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 27.3.2013, 10:22
Сообщение #52


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 27.3.2013, 10:12) *
Происходит загрузка 491 элемента из каждой строки (491...1) поэтому картинка при загрузке смещается.


Большое спасибо!
Переделал в обеих функциях

for i in range(491, 0, -1):


На, это

for i in range(491, -1, -1):


Всё заработало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 27.3.2013, 13:44
Сообщение #53


Участник
**

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

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




Репутация:   0  


Почему вот так картинка выводится, когда я im вывожу

for j in range(0, 720, 1):
     for i in range(491, -1, -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))

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


А вот так не выводится

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

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

for j in range(0, 720, 1):
     for i in range(491, -1, -1):
          im.setPixel(px, py, QtGui.QColor(bf[j][-i], bf[j][-i], bf[j][-i], 255).rgba())


Как я понял во втором случае не правильно вычисляются px и py, но почему? Я ведь в одном случае картеж использую, а вдругом список.

Сообщение отредактировал zuze - 27.3.2013, 14:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 27.3.2013, 14:33
Сообщение #54


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

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

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




Репутация:   8  


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


Надо перенести внутрь цикла
for j in range(0, 720, 1):
     for i in range(491, -1, -1):
          im.setPixel(px, py, QtGui.QColor(bf[j][-i], bf[j][-i], bf[j][-i], 255).rgba())

Иначе px и py не обновляются и остаются одинаковыми на каждой итерации.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.11.2024, 6:19