2014-04-14 2 views
3

위젯에서 .gif 이미지를 표시하는 프로그램을 실행 중이고 kivy 실행기를 사용하여이 앱을 실행하면 완벽하게 작동합니다 .gif 이미지는 정사각형 상자 이미지가 백 그라운드가없는 경우에도 마찬가지입니다..gif 원본 이미지는 Windows kivy 프로그램에서 잘 실행됩니다. kivy 실행기를 통해 실행하면 GIF 이미지의 배경이 표시됩니다.

어떤 아이디어라도, 왜 이것이 안드로이드와 윈도우에서 다르게 행동하는지.

.gif 이미지를 사용한 방법의 예는 .kv 코드를 참조하십시오. 이 .gif 이미지를 버튼으로 사용하고 있습니다.

<[email protected]+AsyncImage> 
    canvas.before: 
     Color: 
      rgb: (0, 0, 1) 
     PushMatrix 
     Rotate: 
      axis: 0,0,1 
      angle: 20 
      origin: self.center 
    source: "images/butterflybluex.gif" 
    canvas.after: 
     PopMatrix 

...

Attached GIF

답변

4

먼저 당신이 PIL/베개를 패키지 있는지 확인, GIF 로딩 그렇지 않은 순수한 파이썬을 [바로 APK를 구축하는 동안 요구 사항 중 하나에 추가] 로더는 안드로이드에 대해 매우 느린 것입니다, 둘째 정사각형 상자의 의미를 자세히 설명해주십시오.

업데이트 : 업데이트 된 예는 로컬 소스와 함께 AsyncImage를 사용하고 있음을 보여 주며, 비동기 이미지는 로컬 소스에 대한 원격 URL과 함께 사용하기 위해 Image 클래스를 사용할 수 있습니다.

두 번째 : 이미지 대신 흰색 배경이 나타나면 잘못된 경로를 지정했습니다. 이미지가 디렉토리에 있거나 디렉토리가 실행 프로그램의 올바른 위치에 있는지 확인하십시오.

업데이트 3 : 앞서 언급 한 문제는 pil을 사용하는 gif 이미지 로더와 관련이 있습니다. 모든 이미지가 그 이미지와 함께 작동하는 것은 아닙니다. 그것은 바탕 화면에서 작동 pil은 설치되지 않은 순수 파이썬 gif 로더가 대신 사용됩니다. 이 로더는 속도 문제의 안드로이드 원인에 사용할 수 없습니다.

한 가지 해결 방법은 gimp를 사용하여 이미지를 열고 저장하는 것입니다. 그러면 제대로 작동합니다. 다른 하나의 방법은 기여하고 수정하는 것입니다 : gif에 pil을 사용하는 로더 ... (웹에 너무 많은 다른 gif가 각각 약간 변경되어 있음을 경고해야합니다. 하나가 작동하는지 확인하면 다른 사람이 고장날 수 있습니다).

바탕 화면에 문제를 재현하려면 베개를 설치하십시오.

gif를 애니메이션으로 사용하는 중에 많은 인공물이 생길 수 있으므로 .zip에 이미지 (png/jpg ...)를 사용하고 소스로 설정하는 것이 좋습니다. 그렇게하면 유물을 제거 할 수 있습니다.

Image 클래스에서 제공하는 gif 또는 .zip 애니메이션은 애니메이션을 많이 제어 할 필요가없는 상황에서만 사용하십시오. 변경되지 않는 정적 애니메이션과 같습니다.

애니메이션이 필요 이상인 경우 Atlas에서 스프라이트 시트를로드하여 애니메이션을 수동으로 관리해야합니다.

+0

1. 현재 kivy launcher 코드를 실행 중입니다. 2. 사각형 상자는 이미지의 배경을 의미합니다. 기본적으로 모든 이미지는 정사각형이며 일반적으로 이미지 배경 상자가 표시되지 않도록 배경을 제거합니다. .. 이것이 명확하지 않으면 나는 더 자세히 설명하려고 노력할 것이다. 3.이 애니메이션을 버튼에서 처음 사용합니다. (방금 질문에 추가 한 .kv 코드 참조) –

+0

배경으로 이미지 + 배경 이미지를 포함하는 사각형 (기본적으로 모든 이미지는 사각형 상자에 포함되어 있음) .경로는 완벽하게 정확합니다 –

+0

기본적으로 투명한 배경을 가진 이미지가 필요합니다. Windows의 동일한 코드는 투명 배경이있는 이미지를 표시하지만 kivy 실행기가있는 Android에서는 깜박이는 배경 이미지가 표시됩니다 –