#python #pygame #cgcontext #cgcontextdrawimage
#python #pygame #cgcontext #cgcontextdrawimage
Вопрос:
Недавно я начал использовать PyGame для разработки простой программы, которая показывает изображение, но я столкнулся с проблемой, из-за которой я не могу загружать изображения с большим количеством цветов (?). Во время моих первых тестов я использовал некоторые изображения с сегментацией по истине, поэтому все они были черными и двухцветными, разграничивающими сегментированную часть изображения. Когда я попытался нарисовать реальное изображение, оно отображало черное изображение и следующую ошибку в терминале:
Oct 24 00:50:08 python[4371] <Error>: CGBitmapContextInfoCreate: CGColorSpace does't support output
Oct 24 00:50:08 python[4371] <Error>: CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Я пытался искать в Интернете людей, которые сталкивались с этой проблемой, но все, что я смог найти, это людей, у которых проблема с недопустимым контекстом в XCode (который я не использую).
Ради этого, вот простой код, который я написал, никакой тайны:
import pygame
import glob
import os
pygame.init()
screen = pygame.display.set_mode((640, 640))
imageName = '2.png'
myimage = pygame.image.load(imageName)
imagerect = myimage.get_rect()
while 1:
screen.fill((255,0,255))
screen.blit(myimage, imagerect)
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit(0)
Я использую Python 2.7.12, OSX 10.12 Sierra и PyGame 1.9.2.
Редактировать: я только что попробовал с файлом PNG, который весь черный, и возникают те же ошибки. Я не знаю, что происходит.
Правка 2: Я попытался запустить пример кода PyGame, который загружает файл PNG и отображает его (pygame.examples.scaletest), и произошла та же ошибка, поэтому я предполагаю, что это проблема с обновлением Sierra.
Комментарии:
1. Опубликованный вами код работает для меня на Sierra с использованием python 2.7.12, установленного из brew, в сочетании с
sudo python -m pip install pygame
иbrew install libpng
2. @user2588654 Какое изображение вы пытались использовать на нем? У меня работает только несколько картинок, может быть, вам повезло. Я уже обновил свой python. Спасибо!
3. Я попробовал это с этим онлайн-изображением логотипа python, и это сработало. Возможно, предоставьте ссылку на изображение, которое не подходит для вас, и я смогу его протестировать. Кроме того, вы пробовали вызывать
pygame.image.load(imageName).convert()
or.convert_alpha()
вместо этого? Не уверен, поможет ли это, но это действительно улучшает производительность blit.
Ответ №1:
В дополнение к удалению pygame мне также пришлось удалить следующее:
brew uninstall sdl sdl_image sdl_mixer sdl_ttf smpeg portmidi
Затем переустановите:
brew install sdl sdl_image sdl_mixer sdl_ttf smpeg portmidi
Затем после:
python -m pip install pygame
Он снова начал работать.
Комментарии:
1. Спасибо! Сработало для меня 🙂 Возникли проблемы с logstalgia при рендеринге цветных шариков, представляющих запросы.
Ответ №2:
У меня была такая же проблема после обновления до Sierra. Моим решением было удалить и переустановить PyGame.
Ответ №3:
У меня такая же проблема в Sierra для python3.
- Во-первых, я обновился с 3.5 до 3.6.1.
- Во-вторых, я понизил версию pygame.
- Удалить pip3 удалить pygame ==> Удалить 1.9.4
- Установить pip3 установить pygame ==> Установить 1.9.3