C #을 사용하여 투명 이미지 크기 조정
-
09-06-2019 - |
문제
누군가 품질 손실이 없이 투명한 이미지 (주로 GIF)의 크기를 조정할 수있는 비밀 공식을 가지고 있습니까?
여러 가지 시도를 해봤지만 가장 가까운 것이 충분하지 않습니다.
내 기본 이미지 살펴보기 :
http://www.thewallcompany.dk/test/main.gif
크기 조정 된 이미지 :
http://www.thewallcompany.dk/test/ScaledImage.gif 라코 디스
인덱싱 된 크기 조정을 위해 위 코드를 사용하고 있습니다.
개선 아이디어가있는 사람이 있습니까?
해결책
확장 후 파일 형식 보존에 대한 요구 사항이 없다면 다음 접근 방식을 권장합니다. 라코 디스
결과는 정말 멋진 안티 앨리어싱 가장자리를 갖게됩니다
- 광고로 대체 된 삭제 된 이미지 판잣집 이미지
이미지를 gif로 내 보내야하는 경우에는 타고있는 중입니다.GDI +는 gif와 잘 작동하지 않습니다.이 블로그 게시물 자세한 내용은 여기에 대해
다른 팁
이것은 GDI +를 활용하는 몇 가지 애플리케이션에 사용했던 기본 크기 조정 기능입니다. 라코 디스
GIF와 함께 작동하는지 기억이 나지 않지만 시도해 볼 수 있습니다.
참고 :이 기능에 대해 전적인 기여를 할 수는 없습니다.온라인에서 다른 샘플에서 몇 가지를 모아서 내 필요에 맞게 작동하도록했습니다. 8 ^ D
문제는 스캔 라인 기반 크기 조정을 수행하고 있다는 것입니다. 아무리 세게 조정해도 들쭉날쭉해질 것입니다.좋은 이미지 크기 조정 품질을 사용하려면 크기 조정 된 픽셀이 덮는 사전 크기 조정 된 픽셀의 평균 색상을 파악하기 위해 더 많은 작업을 수행해야합니다.
이 웹 사이트를 운영하는 사람은 몇 가지 이미지 크기 조정 알고리즘에 대해 설명하는 블로그 게시물을 가지고 있습니다.bicubic 이미지 스케일링 알고리즘이 필요할 것입니다.
Markus Olsson의 솔루션을 사용하여 이미지의 크기를 동적으로 조정하고 응답 스트림에 기록하려는 모든 사용자를위한 것입니다.
작동하지 않음 : 라코 디스
하지만 다음과 같은 효과가 있습니다. 라코 디스
PNG가 GIF보다 확실히 낫지 만 때때로 GIF 형식을 유지해야하는 사용 사례가 있습니다.
GIF 또는 8 비트 PNG를 사용하면 양자화 문제를 해결해야합니다.
양자화는 이미지를 가장 잘 보존하고 표현할 256 (또는 그 이하) 색상을 선택한 다음 RGB 값을 다시 인덱스로 전환하는 곳입니다. 크기 조정 작업을 수행하면 색상을 혼합하고 균형을 변경할 때 이상적인 색상 팔레트가 변경됩니다.
10 ~ 30 %와 같이 약간의 크기를 조정하는 경우 원래 색상 팔레트를 유지하는 것이 좋습니다.
그러나 대부분의 경우 다시 정량화해야합니다.
선택할 주요 두 가지 알고리즘은 Octree와 nQuant입니다. Octree는 매우 빠르며 특히 스마트 디더링 알고리즘을 오버레이 할 수있는 경우 매우 훌륭합니다. nQuant는 인코딩을 수행하기 위해 최소 80MB의 RAM이 필요하며 (전체 히스토그램을 작성 함) 일반적으로 20-30 배 더 느립니다 (평균 이미지에서 인코딩 당 1-5 초). 그러나 일관된 성능을 유지하기 위해 값을 '반올림'하지 않기 때문에 때때로 Octree보다 더 높은 이미지 품질을 생성합니다.
imageresizing.net 프로젝트에서 투명 GIF 및 애니메이션 GIF 지원을 구현할 때 저는 Octree를 선택했습니다. 이미지 팔레트를 제어하면 투명도 지원이 어렵지 않습니다.