ASP.NET 4.0에서 동적 이미지 크기 조정 웹 응용 프로그램을 만들었으며 IIS 7.5를 사용하는 Windows 2008 R2 서버에서 실행 중입니다.
이미지 자체는 이진 최대 필드로 SQL 2008 R2 데이터베이스에 저장됩니다 (이미지는 이것이 가능할만큼 충분히 작으며 처음에는 파일 스트림 옵션을 시도했지만 목적에 비해 너무 느 렸습니다).
데이터베이스를 쿼리하여 "blob"을 바이트 배열로 검색하고 다음과 같이 이미지 개체에로드합니다.
Dim imageOriginal as Image = Nothing
Dim imageResized as Image = Nothing
imageOriginal = FindOriginalImage()
몇 가지 작업을 수행해야합니다. PNG 인 경우 흰색 캔버스에 그려야합니다. 그렇지 않으면 이미지 크기를 조정해야하는 경우 정말 이상한 줄무늬가 나타납니다. 나는 또한 잠재적으로 그것을 축소하고, 워터 마크를 쳐서 최종 사용자에게 제공하기 전에 디스크에 저장합니다. 이 모든 작업을 수행하기 위해 디스크에 저장하기 전에 필요한 작업 중 일부를 수행하기 위해 두 번째 이미지 개체를 만들어야한다는 것을 알았으므로 처리를 위해 원본 이미지를 크기가 조정 된 개체에 복사했습니다. 아래 참조 :
If Not imageOriginal is nothing then
imageResized = imageOriginal
(FindOriginalImage를 호출하면 데이터베이스에서 이미지를 찾을 수없는 경우 NOTHING 값이 반환됩니다.)
.... 나머지 모든 크기 조정, 워터 마킹 등-이 코드는 모두 작동합니다 ...
imageResized 개체에 필요한 모든 작업을 수행 한 후 다음 줄을 실행합니다.
imageResized.Save(DestinationFile, ImageFormat.Jpeg)
대부분의 경우 문제없이 작동하지만 파일을 디스크에 저장하려고 할 때 가끔 GDI + 일반 오류가 발생합니다.
물론이 작업을 마치면 두 개체를 모두 처리합니다.
imageResized.Dispose()
imageOriginal.Dispose()
GC.Collect()
어떤 아이디어?
먼저 이미지를 MemoryStream에 저장 한 다음 메모리 스트림을 파일 시스템에 덤프하십시오. 최소한 파일 / 액세스 문제를 배제 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다