GDI+의 일반 버그 [수정됨]

GDI+의 일반 버그 [수정됨]

비트맵 개체를 수정하거나 웹 서버에 이미지를 저장하거나 업로드하려고 하면 GDI+에서 일반 오류가 발생했습니다 .라는 오류 메시지가 나타날 수 있습니다 . 사용 중인 응용 프로그램에 관계 없이 오류가 발생할 수 있습니다. 이 게시물은 영향을 받는 사용자가 문제를 해결하기 위해 적용할 수 있는 가장 적용 가능한 솔루션을 제공합니다.

GDI+가 무엇인가요?

Windows GDI+는 2D 그래픽, 이미지 및 텍스트를 렌더링하기 위한 응용 프로그램과 장치 드라이버 간의 중간 계층 역할을 하여 2D 벡터 그래픽, 이미지 및 타이포그래피를 제공합니다. GDI+는 새로운 기능을 추가하고 기존 기능을 최적화하여 Windows GDI(그래픽 장치 인터페이스) (이전 버전의 Windows에 포함된 그래픽 장치 인터페이스)를 개선합니다. 즉, GDI+는 비디오 디스플레이와 프린터 모두에 그래픽과 서식 있는 텍스트를 표시하기 위한 API(응용 프로그래밍 인터페이스)로 구성된 Windows 그래픽 하위 시스템입니다.

GDI+의 일반 오류

GDI+ 오류로 인해 발생하는 일반 오류는 예외가 세부 정보를 제공하지 않기 때문에 매우 일반적입니다. 그러나 이 문제에 직면한 경우 아래 제안 사항은 시나리오 또는 완료한 작업에 따라 문제를 해결하는 데 도움이 될 것입니다.

1] 대상 환경을 재부팅한 다음 따르던 작업을 반복합니다. 이는 적용에서 프로덕션으로 앱을 배포하거나 이동하는 영향을 받는 사용자에게 효과가 있었습니다.

2] 이 오류는 수정된 비트맵을 저장하고 덮어쓰려고 할 때 “잠금”을 설정하기 때문에 발생할 수 있습니다. 하드 드라이브에 저장된 이미지에서 비트맵 개체를 초기화할 때 기본 이미지 파일에 잠금이 생성되기 때문입니다. 즉, Bitmap 객체 또는 Image 객체가 파일에서 생성될 때 파일은 객체가 지속되는 동안 잠긴 상태로 유지됩니다. 결과적으로 이미지를 변경하고 이미지가 생성된 동일한 파일에 다시 저장할 수 없습니다. 이 경우 다음 중 하나를 수행하여 문제를 해결합니다.

  • 파일을 덮어쓰는 대신 새 파일을 원본 파일과 다른 이름으로 저장하십시오.
  • 기존 파일을 덮어써야 하는 경우 기존 비트맵에서 별도의 비트맵을 만든 다음 이전 비트맵을 삭제하면 이미지 파일의 잠금이 해제됩니다. 이제 새 비트맵을 필요한 대로 변경하고 새 비트맵을 원본 이미지 파일 이름으로 저장할 수 있습니다.
  • “중간” 메모리 스트림에 저장합니다. Memory /FileStreamvs 코드 는 bitmap.Save(...)직관적이지 않지만 특정 메서드 호출을 설명하기 위해 약간의 변형으로 작동해야 합니다.

파일의 기본 잠금은 Bitmap 개체가 삭제될 때만 해제됩니다. 잠금이 해제되면 덮어쓸 수 있습니다.

3] 이미지를 제거해야 합니다. 가비지 수집기에 의존하여 이미지를 제시간에 찾고 관리되지 않는 GDI 리소스를 해제하면 예외가 발생할 수 있기 때문입니다. 또한 코드를 작성할 때 다음 사항에 주의하십시오.

  • ConvertTo낭비인 것 같으니 필요한 경우에만 사용하세요.
  • 경로를 연결해야 하는 경우 Path.Combine.
  • 문자열을 함께 추가하는 대신 문자열 보간을 사용합니다.
  • 백슬래시와 같은 문자를 이스케이프해야 하는 경우 Verbatim String Literal @”…”를 사용합니다.
  • using코드에서 예외가 발생하더라도 항상 개체를 처리하는 것을 잊지 않는 연산자를 선호 합니다.

4] 파일을 저장할 때 폴더에 쓸 수 있는 권한이 없습니다. 특히 웹사이트가 제한된 권한으로 실행되기 때문에 웹사이트에서 오류가 발생하는 경우. 웹 응용 프로그램에서 웹 사이트를 실행하는 응용 프로그램 풀 또는 계정에는 파일을 저장할 폴더에 대한 쓰기 권한이 있어야 하므로 파일을 저장하려는 폴더가 쓰기 가능한지 확인하십시오. 예를 들어, 계정으로 웹사이트를 사용하는 경우 사용자에게 폴더에 대한 쓰기 권한을 부여 DefaultAppPool해야 합니다.IIS AppPool\DefaultAppPool

5] Azure를 사용 중이고 로컬 테스트 시스템이 아닌 원격 웹 서버에서만 비트맵을 열 때 GDI+에서 일반 오류가 발생하는 경우 GDI+가 Azure IIS 서버에 있을 수 있습니다. 김프에서 만든 새 BMP 형식을 처리할 수 없습니다. 그렇다면 다음 중 하나를 수행하여 문제를 해결하십시오.

  • 페인트로 BMP를 다시 저장합니다.
  • 압축되지 않은 PNG를 대신 사용하십시오.
  • 김프를 사용하여 24비트 BMP로 저장합니다. 이 방법은 품질이 떨어집니다.

6] 이 오류 메시지는 탐색 Bitmap.Save()하려는 경로가 유효하지 않은 경우(폴더가 존재하지 않는 경우 등) 표시됩니다. 간단히 말해서, 이미지를 저장하기 위해 잘못된 경로를 쓰고 있습니다. 이 경우 저장 경로를 수정하고 경로에 파일 이름도 포함되어 있는지 확인하십시오.

7] 비트맵 파일이 시스템 드라이브에 이미 존재하고 응용 프로그램에서 오류가 발생한 경우 다음 단계를 따르십시오.

  • 대상 폴더가 있는지 확인하십시오.
  • 대상 폴더에 이미 해당 이름의 파일이 없는지 확인하십시오.
  • 로컬 드라이브에서 이미지가 저장된 폴더의 권한을 확인하십시오. 이렇게 하려면 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 속성 > 보안 > 편집 > 추가 를 선택합니다. 모든 사람을 선택하고 모든 권한 허용 상자를 선택 합니다.

C#에서 GDI+의 일반 오류를 해결하는 방법은 무엇입니까?

C#의 GDI+에서 일반 오류가 발생하는 경우 저장하려는 비트맵 파일이 이미 시스템 드라이브에 있기 때문일 수 있습니다. 이 경우 대상 폴더가 존재하고 동일한 이름을 가진 파일이 아직 없는지 확인할 수 있습니다.

GDI+ 오류란 무엇입니까?

GDI+는 일반적으로 가장 일반적인 두 가지 이유로 파일을 저장할 수 없을 때 오류를 발생시킵니다. 한 가지 이유는 하드 드라이브에 저장된 이미지에서 Bitmap 개체를 초기화할 때 기본 이미지 파일에 잠금이 생성되기 때문입니다. 잠금 때문에 수정된 비트맵을 저장하고 덮어쓰려고 하면 이 오류가 발생합니다.

GDI 창을 수정하는 방법?

장치에서 GDI+ Windows 오류를 수정하려면 다음 제안 사항이 작동하는지 확인하십시오.

  • 관리자 권한 명령 프롬프트에서 SFC 스캔을 실행합니다.
  • 전원 문제 해결사를 실행합니다.
  • 비디오 카드 드라이버를 업데이트하십시오.
  • Windows 업데이트를 확인하십시오.
  • 클린 부팅 모드에서 컴퓨터를 시작합니다.

내 노트북의 GDI란 무엇입니까?

GDI를 사용하면 응용 프로그램 개발자가 특정 디스플레이 장치의 세부 사항에 대해 걱정하지 않고 화면이나 프린터에 정보를 표시할 수 있습니다. 응용 프로그램 개발자는 GDI+ 클래스에서 제공하는 메서드를 호출하고 이러한 메서드는 차례로 특정 장치 드라이버를 적절하게 호출합니다. GDI+는 그래픽 하드웨어에서 응용 프로그램을 분리하며 개발자가 장치 독립적인 응용 프로그램을 만들 수 있도록 하는 것은 이러한 분리입니다.

Windows가 여전히 GDI를 사용하고 있습니까?

Windows XP의 도래와 함께 GDI는 더 이상 사용되지 않으며 C++ 기반 GDI+ 하위 시스템으로 대체되었습니다. GDI+는 Windows XP 이상에 포함되어 있지만 GDI+ DLL은 응용 프로그램과 함께 제공되어 이전 버전의 Windows에서 사용할 수도 있습니다.

출처: Windows 클럽

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다