문제

제가 작성한 .NET CF 애플리케이션의 기능 중 하나는 원격 카메라에서 프레임을 획득하는 것입니다.프레임은 단일 JPEG 이미지로 획득되어 사용 가능한 경우 화면에 표시됩니다.

충분히 좋은 솔루션이었지만 스트림을 스트림으로 변환하는 데 시간이 걸린다는 사실이 마음에 들지 않습니다. Image 개체와 함께 Bitmap() 생성자는 훨씬 훨씬 훨씬 더 크다 스트림을 다운로드하는 데 필요한 시간보다

이 문제에 대해 검색하기 위해 일부 블로그를 검색했을 때 일부 개발자가 다음을 사용하고 있음을 발견했습니다. Image.FromStream() 이 방법은 validateImageData 일부 유효성 검사 코드를 제어하는 ​​것으로 보이는 플래그입니다.언제 validateImageData false이면 변환 속도가 훨씬 빨라집니다.

좋아, 내 생각엔 ....그러나 Compact Framework는 이 방법을 구현하지 않습니다!

누구든지 이 문제를 해결하는 방법이나 적어도 스트림을 스트림으로 변환하는 방법을 알고 있습니다. Image 불필요한 지연 없이?

도움이 되었습니까?

해결책

이것이 도움이 될지는 확실하지 않지만 OpenNETCF.드로잉.Imaging에는 스트림에서 이미지를 읽는 클래스가 있지만 IImage로 래핑된 com 개체입니다.그런 다음 IImage.Draw를 사용하여 비트맵에 그릴 수 있습니다.또한 장치에서 큰 JPEG의 크기가 조정된 이미지를 가져오는 데 사용하는 GetThumbnail 메서드도 있습니다.

여기 Alex Feinman의 블로그 게시물입니다.

다른 팁

JPEG의 크기가 큰 경우(예: 1200 x 1600 등) Bitmap 생성자를 사용하는 장치에서 발생하는 속도 문제 중 하나는 Bitmap의 크기가 메모리에 생성되어야 한다는 것입니다(비트맵은 240 X 320 화면에 표시되더라도 1200 x 1600이어야 합니다.전체 크기 대신 이미 크기가 320 X 240인 JPEG를 검색할 수 있는 경우 비트맵 생성 시간이 훨씬 단축됩니다.

Bitmap 생성자 외에 누락된 FromStream 메서드에 대한 대안을 찾을 수 없습니다.JPEG 형식에 익숙하다면 자신만의 JPEG-BMP 변환기를 작성하는 것이 그리 어렵지 않을 것이라고 생각합니다. 하지만 Bitmap()보다 빠르지는 않을 것이라고 생각합니다.

편집하다:죄송합니다. 자체 제작한 변환기로는 240 X 320 JPEG를 240 X 320 비트맵으로 변환하는 속도가 더 빠르지 않다는 뜻입니다.전체 크기 비트맵을 먼저 생성하는 단계를 건너뛸 수 있기 때문에 훨씬 더 큰 JPEG를 240 X 320 비트맵으로 변환하는 것이 훨씬 더 빠르게 이루어질 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top