2012-05-19 3 views
1

이미지를 저장하기 전에 이미지를 데이터베이스에 저장하고 있습니다. 크기를 변경하고 있습니다.스트림에서 이미지 압축하기

그러나 크기 조정, 이미지 압축하지 않습니다. 스트림은 동일한 스트림입니다. 나는 이미지를 압축 할 수 있기를 원한다.

데이터베이스에 저장된 이미지를 스트림으로 압축하고 다음과 같이 요청하여 반환하는 방법은 무엇입니까?

public ActionResult ViewImage(int id, string imageType ="image") 
    { 
     ContestImage contestImage = GetContestImage(id); 

     byte[] fileContent; 
     string mimeType; 
     string fileName; 

     if (imageType == "thumb") 
     { 
      fileContent = contestImage.ThumbNail.Image; 
      mimeType = contestImage.ThumbNail.ImageMimeType; 
      fileName = contestImage.ThumbNail.ImageFileName; 
     } 
     else if (imageType == "image") 
     { 
      fileContent = contestImage.Image.Image; 
      mimeType = contestImage.Image.ImageMimeType; 
      fileName = contestImage.Image.ImageFileName; 
     } 


     return File(fileContent, mimeType, fileName); 
    } 

public class UserImage 
{ 
    public virtual int Id { set; get; } 
    public virtual byte[] Image { set; get; } 
    public virtual string ImageMimeType { set; get; } 
    public virtual string ImageFileName { set; get; } 
} 

ContestImage에는 UserImage 개체가 있습니다.

+0

아마 * 작동하지 않는 크기 조정 코드를 보여줄 필요가 있습니까? – yamen

+0

resizin은 작동하지만 동일한 바이트 []를 유지하므로 압축하지 않습니다. 이미지를 작게 만듦. 그것을보고 싶어? – DarthVader

+0

예, 문제가 발생할 가능성이 큽니다. – yamen

답변

0

두 마음 스프링 접근 : 화상으로서

  • 로드 데이터 및 압축 파일 포맷 (메모리 스트림)를 직렬화 (즉 PNG 또는 JPEG)

  • 직렬화 DeflateStream과 같은 압축 스트림을 통한 데이터 (메모리 스트림에 대한). 당신이 MemoryStream을의 데이터를 일단

, 당신은 당신의 데이터베이스에 전달 MemoryStream.ToArray()가 다시 직선 바이트 [] 버퍼를 변환하는 데 사용할 수 있습니다.

0

데이터베이스에서 이미지를 저장하고 검색 할 때 GZipStream을 사용해 보셨습니까? 메인

관련 문제