Closed GoogleCodeExporter closed 9 years ago
What steps will reproduce the problem? I'm running the lastest source from hg+https://pyglet.googlecode.com/hg/ as of 6 April 2012. Trying to load a PNG on MacOSX fails--it returns an image with all zero data, and will draw a black box. I've tracked it down to the QuartzImageDecoder. If I delete that decoder so it uses the pyglet.image.codecs.png.PNGImageDecoder instead, it works. Below is a program that illustrates this, and here is the output: % python /tmp/tspyglet.py Demonstration of failing PNG decoder on Mac OS 10.7.3 Here are the current image decoders available, and the ones for PNGs: get_decoders: [<pyglet.image.codecs.quartz.QuartzImageDecoder object at 0x10b2a9050>, <pyglet.image.codecs.png.PNGImageDecoder object at 0x10b2a9390>, <pyglet.image.codecs.dds.DDSImageDecoder object at 0x1087d3450>, <pyglet.image.codecs.bmp.BMPImageDecoder object at 0x10b2a9490>] _decoder_extensions[.png]= [<pyglet.image.codecs.quartz.QuartzImageDecoder object at 0x10b2a9050>, <pyglet.image.codecs.png.PNGImageDecoder object at 0x10b2a9390>] Load an image using the default decoder, i.e. QuartzImageDecoder. Notice that the returned Image has zeros for it's data. raw png data: '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01,' image data: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' Now remove the QuartzImageDecoder so we use the pyglet.image.codecs.png.PNGImageDecoder. It creates good Image.data _decoder_extensions[.png]= [<pyglet.image.codecs.png.PNGImageDecoder object at 0x10b2a9390>] raw png data: '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01,' image data: '\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00\xff\xff\xff\x00' -------------- import pyglet window = pyglet.window.Window() filename = ('/tmp/SimpsonsWinston.png') print '''Demonstration of failing PNG decoder on Mac OS 10.7.3 Here are the current image decoders available, and the ones for PNGs:''' print ' get_decoders:', pyglet.image.codecs.get_decoders(filename) print ' _decoder_extensions[.png]=', pyglet.image.codecs._decoder_extensions['.png'] print ''' Load an image using the default decoder, i.e. QuartzImageDecoder. Notice that the returned Image has zeros for it's data.''' image = pyglet.image.load(filename) print ' raw png data:', repr(open(filename).read()[:20]) print ' image data:', repr(image.data[:20]) print ''' Now remove the QuartzImageDecoder so we use the pyglet.image.codecs.png.PNGImageDecoder. It creates good Image.data''' del pyglet.image.codecs._decoder_extensions['.png'][0] print ' _decoder_extensions[.png]=', pyglet.image.codecs._decoder_extensions['.png'] image = pyglet.image.load(filename) print ' raw png data:', repr(open(filename).read()[:20]) print ' image data:', repr(image.data[:20]) # @window.event # def on_draw(): # window.clear() # image.blit(10, 10) # pyglet.app.run() -------------- Here is the output of pyget/info.py: % python info.py Python ------------------------------------------------------------------------------ sys.version: 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] sys.platform: darwin sys.maxint: 9223372036854775807 objc.__version__: 2.2 os.getcwd(): /Users/winstonw/hg/Electronics/proto/venv/lib/python2.7/site-packages/pyglet pyglet ------------------------------------------------------------------------------ pyglet.version: 1.2dev pyglet.__file__: /Users/winstonw/hg/Electronics/proto/venv/lib/python2.7/site-packages/pyglet/__i nit__.pyc pyglet.options['debug_win32'] = False pyglet.options['xlib_fullscreen_override_redirect'] = False pyglet.options['debug_trace_args'] = False pyglet.options['font'] = ('gdiplus', 'win32') pyglet.options['debug_gl_trace_args'] = False pyglet.options['debug_trace'] = False pyglet.options['debug_gl_trace'] = False pyglet.options['debug_x11'] = False pyglet.options['debug_media'] = False pyglet.options['debug_trace_depth'] = 1 pyglet.options['vsync'] = None pyglet.options['debug_gl'] = True pyglet.options['darwin_cocoa'] = True pyglet.options['debug_trace_flush'] = True pyglet.options['shadow_window'] = True pyglet.options['xsync'] = True pyglet.options['debug_font'] = False pyglet.options['graphics_vbo'] = True pyglet.options['debug_lib'] = False pyglet.options['debug_graphics_batch'] = False pyglet.options['audio'] = ('directsound', 'pulse', 'openal', 'silent') pyglet.options['debug_texture'] = False pyglet.window ------------------------------------------------------------------------------ platform: <pyglet.window.Platform object at 0x101a9cd10> display: <pyglet.canvas.cocoa.CocoaDisplay object at 0x107cfa9d0> screens[0]: CocoaScreen(x=0, y=0, width=1920, height=1200) screens[1]: CocoaScreen(x=1920, y=228, width=1280, height=800) config['double_buffer'] = 1 config['stereo'] = 0 config['buffer_size'] = 32 config['aux_buffers'] = 0 config['sample_buffers'] = 0 config['samples'] = 0 config['red_size'] = 0 config['green_size'] = 0 config['blue_size'] = 0 config['alpha_size'] = 8 config['depth_size'] = 24 config['stencil_size'] = 0 config['accum_red_size'] = 0 config['accum_green_size'] = 0 config['accum_blue_size'] = 0 config['accum_alpha_size'] = 0 config['major_version'] = None config['minor_version'] = None config['forward_compatible'] = None config['debug'] = None context: CocoaContext() window.context._info ------------------------------------------------------------------------------ gl_info.get_version(): 2.1 APPLE-7.18.11 gl_info.get_vendor(): Intel Inc. gl_info.get_renderer(): Intel HD Graphics 3000 OpenGL Engine gl_info.get_extensions(): GL_APPLE_aux_depth_stencil GL_APPLE_client_storage GL_APPLE_element_array GL_APPLE_fence GL_APPLE_float_pixels GL_APPLE_flush_buffer_range GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_packed_pixels GL_APPLE_pixel_buffer GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_specular_vector GL_APPLE_texture_range GL_APPLE_transform_hint GL_APPLE_vertex_array_object GL_APPLE_vertex_array_range GL_APPLE_vertex_point_size GL_APPLE_vertex_program_evaluators GL_APPLE_ycbcr_422 GL_ARB_color_buffer_float GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_vertex_array_bgra GL_ARB_vertex_blend GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_separate_stencil GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_draw_buffers2 GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod_bias GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_IBM_rasterpos_clip GL_NV_blend_square GL_NV_conditional_render GL_NV_depth_clamp GL_NV_fog_distance GL_NV_light_max_exponent GL_NV_texgen_reflection GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod pyglet.gl.glu_info ------------------------------------------------------------------------------ glu_info.get_version(): 1.3 MacOSX glu_info.get_extensions(): pyglet.gl.glx_info ------------------------------------------------------------------------------ GLX not available. pyglet.media ------------------------------------------------------------------------------ audio driver: <pyglet.media.drivers.openal.OpenALDriver object at 0x1087334d0> pyglet.media.avbin ------------------------------------------------------------------------------ AVbin not available. pyglet.media.drivers.openal ------------------------------------------------------------------------------ Library: <CDLL '/System/Library/Frameworks/OpenAL.framework/OpenAL', handle 105d4a480 at 10873b590> Version: (1, 1) Extensions: ALC_EXT_CAPTURE ALC_ENUMERATION_EXT ALC_EXT_MAC_OSX ALC_EXT_ASA ALC_EXT_ASA_DISTORTION ALC_EXT_ASA_ROGER_BEEP pyglet.input.wintab ------------------------------------------------------------------------------ WinTab not available.
Original issue reported on code.google.com by winstonw...@gmail.com on 6 Apr 2012 at 6:44
winstonw...@gmail.com
I believe Philip's ctypes work fixes this.
Original comment by winstonw...@gmail.com on 22 Jun 2012 at 9:33
Original issue reported on code.google.com by
winstonw...@gmail.com
on 6 Apr 2012 at 6:44