문제

데이터베이스에서 Blob Type 필드에서 몇 바이트 만 읽을 수있는 방법이 있습니까 (이 질문의 경우 DB 브랜드는 중요하지 않음) 이진 내용이 이미지인지 확인하십시오 (JPG, 중 하나라고 가정합니다. GIF, PNG)? 데이터베이스에 파일을 저장하는 웹 앱이 있는데 이미지 인 경우 썸네일을 표시하고 싶습니다. 그렇지 않으면 아이콘을 표시하고 싶습니다 ... 그러나 Blob에 대한 다른 곳에 저장된 모방 유형 정보가 없습니다. (내 디자인이 아니다) ... 그리고 WebApp이기 때문에 이미지의로드는 별도의 호출 (getImage.ashx)에서 발생해야합니다.u003Cimg> 태그 .. 그리고 태그를 작성할 때 전체 블로브를 라이브러리에 읽고 싶지 않아도 이미지인지 결정하고 크기를 조정하는 등 ... 처음 몇 바이트를보고 태그를 작성 해야하는지 여부를 알 수 있습니다. 이미지 파일 구조/형식을 이해하지 못합니다. 처음 몇 바이트에 JPG, GIF 또는 PNG인지 알 수있는 몇 바이트에 일종의 표준 헤더가 있는지 알 수 없습니다.

이해가 되나요?

당신이 저를 구체적으로 도와주고 싶다면 (일반적으로 할 수 있는지에 대답하는 대신) .net C# 및 SQL 2005를 사용하고 있습니다.

감사!

도움이 되었습니까?

해결책

PNGS는 다음과 같이 시작합니다 : 89 50 4E 47 0D 0A 1A 0A; 보다 http://www.libpng.org/pub/png/spec/1.2/png-structure.html

GIF는 47 49 46 38 37 61 (GIF87A) 또는 47 49 46 38 39 61 (GIF89A)로 시작합니다. 보다 http://www.fileformat.info/format/gif/egff.htm

JPEG는 FF D8 FF E0 XX XX 4A 46 49 46 00으로 시작합니다 (편집 : 헤더의 누락 된 부분 추가; XX XX는 헤더 길이입니다. 보다 http://www.obrador.com/estentialjpeg/headerinfo.htm

참조: http://wangrui.wordpress.com/2007/06/19/file-signatures-table/

다른 팁

  • JPEG 파일은 시작합니다 FF D8 FF
  • GIF 파일은 시작합니다 GIF89a (47 49 46 38 39)

이것은 구식 학교 (데이터 액세스 전술)로 되돌아갑니다. 어쨌든, 당신은 DataReader를 사용하여 필드와 스트리밍 결과를 잡은 다음 FIRS 8 바이트를보고 어떤 종류의 이미지를 다루고 있는지 확인할 수 있습니다.

소개는이 기사를 참조하십시오 스트림 리더를 데이터 드레더에 첨부하는 방법.

즉, 이미지가 거대한 일이 아니라면 모든 바이트를 얻을 수있을 것입니다. 주로 두 번째 우물에 담그면 헤더를 검사하여 얻은 속도가 손실 될 수 있기 때문입니다.

또 다른 전술은 필드를 검사하고 첫 번째 헤더 바이트를 기반으로 SQL에서 유형을 노출시키는 뷰를 만드는 것일 수 있습니다. 못 생겼지 만 꼬집음으로 작동합니다.

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