GIF 동영상 프레임 크기 조정에 문제가 있습니다. 프레임을 그리기 전에 Canvas.scale (float sx, float sy)을 사용하고 있습니다. 그러나 크기가 조정 된 프레임을 그리지는 않으며 아무 것도 그리지 않습니다. 어떤 ides?Android 캔버스에서 gif 이동 프레임을 축척 할 수 없습니다.
1
A
답변
1
이렇게하면됩니다.
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.TRANSPARENT);
canvas.scale(0.5f, 0.5f); // scale gif to its half size
super.onDraw(canvas);
/* movie.setTime . . . */
movie.draw(canvas, ...);
this.invalidate();
}
2
당신은 당신이뿐만 아니라보기의 getWidth()와 getHeight() 메소드를 사용한다 다른 레이아웃 내에서 확장 할 수 및 재사용 전용보기를 만들려고 노력합니다.
보기의 전용 크기를 변경할 때이 문제가 발생했습니다. canvas.getWidth()는 전체 화면의 너비이며보기 너비가 아니므로 onDraw 메서드를 다음과 같이 수정했습니다. 그러나 다른 방법을 사용하여, 문이 영화가 내 경우에는,보기보다 큰 있는지 확인하는 경우
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
long now = android.os.SystemClock.uptimeMillis();
Paint p = new Paint();
p.setAntiAlias(true);
if (cur == 0) cur = now;
if(movie != null)
{
float scale = 1f;
if(movie.height() > getHeight() || movie.width() > getWidth())
scale = (1f/Math.min(canvas.getHeight()/movie.height(), canvas.getWidth()/movie.width())) + 0.25f;
else
scale = Math.min(canvas.getHeight()/movie.height(), canvas.getWidth()/movie.width());
canvas.scale(scale, scale);
canvas.translate(((float)getWidth()/scale - (float)movie.width())/2f,
((float)getHeight()/scale - (float)movie.height())/2f);
int relTime = (int)((now - cur) % movie.duration());
movie.setTime(relTime);
movie.draw(canvas, 0, 0);
invalidate();
}
}
을 주목 getWidth(), getHeight()는 내 의견 높이 160했지만 내 GIF는 260이었다 항상 GIF를 그리기에는 너무 큽니다.이 변경 사항으로 테스트 할 수 있었고 내 View가 1280 X 900이고 이미지가 커지고 내 뷰가 1000 X 160이고 크기가 축소 된 경우 모두에서 작동하는 것을 확인할 수있었습니다.
행운을 빈다, 그리고이 재미 - 즉, D
크리스는
관련 문제
- 1. ScaleDrawable로 Drawable을 축척 할 수 없습니다.
- 2. 캔버스에서 이미지 데이터를 캐싱 할 수 없습니다.
- 3. 파이썬, 어떻게 GIF 프레임을 얻을 수 있습니까?
- 4. 캔버스에서 이미지를 제거 할 수 없습니다 : javascript
- 5. 게임 캔버스에서 양식으로 이동
- 6. Python : GIF 프레임을 PNG로 변환
- 7. html 캔버스에서 이미지 이동
- 8. Jmagick 오류 : magick.MagickException : 축척 할 이미지가 없습니다.
- 9. AnimationDrawable에서 프레임을 지울 수 없습니다.
- 10. android browser : 축척 비율을 얻으십시오
- 11. Android 애니메이션 GIF 지원
- 12. SVigigure를 Graphiti에서 VectorFigure로 축척 할 수 있습니까?
- 13. 단추 하나만 누르면 위로 슬라이드 할 프레임을 움직일 수 없습니다.
- 14. Android : 캔버스에서 그림 저장
- 15. CABasicAnimation 프레임을 300px만큼 왼쪽으로 이동
- 16. 캔버스 이동 할 수 없습니다 - 실버
- 17. Android 애니메이션 GIF
- 18. Android : 라이브러리를로드 할 수 없습니다.
- 19. 프레임 컨트롤이있는 캔버스의 GIF 애니메이션
- 20. Android ImageView 화면에 축척 된 이미지가 표시됩니다.
- 21. Android : 캔버스에서 비트 맵을 만들고 "sdcard/folder/subfolder"에 저장했지만 이미지보기로 디코딩 할 수 없습니다.
- 22. AVAssetImageGenerator가 영화의 모든 프레임을 제공 할 수 없습니다.
- 23. opencv + python + linux + webcam = 프레임을 캡처 할 수 없습니다.
- 24. UIIMageView, 경고 : check_safe_call : 현재 프레임을 복원 할 수 없습니다.
- 25. PHP에서 알파로 GIF 파일을 워터 마킹 할 수 없습니다. 투명 문자열을 GIF 파일에 표시 할 수 있습니까?
- 26. OpenGL ES - VBO에서 변환을 수행 할 수 있습니까? (축척, 평행 이동, 회전)
- 27. Android : 캔버스에서 문자 높이 측정
- 28. NSSocket을 통해 NSData로 수신 된 애니메이션 GIF 이미지가 프레임을 분할 할 수 없음
- 29. 천막의 UILabel 프레임을 바꿀 수 없습니다
- 30. GWT 및 애니메이션 GIF : 개별 프레임을 표시하는 방법?
난 단지 드로잉 코드에서 '다른'문을 사용하는 것이 더 나은 결과를 산출 것으로 나타났다. 그것은 모든 장치로 확장되었습니다. 내 프로젝트에서 'if'문을 사용하지 않았다. – EricRobertBrewer