높이와 너비가 원래와 같으면 이미지를 처리하기 위해 이미지 크기 조정을 피하는 방법 (param)이 있습니까?너비와 높이가 원본과 동일한 경우 이미지 크기 조정을 방지하는 방법은 무엇입니까?
그렇지 않은 경우 플러그인에서 축척 과정을 어디에서 취소 할 수 있습니까?
높이와 너비가 원래와 같으면 이미지를 처리하기 위해 이미지 크기 조정을 피하는 방법 (param)이 있습니까?너비와 높이가 원본과 동일한 경우 이미지 크기 조정을 방지하는 방법은 무엇입니까?
그렇지 않은 경우 플러그인에서 축척 과정을 어디에서 취소 할 수 있습니까?
ImageResizer는 이미 인 크기 이미지를 가지고 있지 않습니다. 그러나 메타 데이터를 디코딩하고 메타 데이터를 제거한 다음 웹 호환 및 웹 효율적인 형식 (일반적으로 jpg 또는 png)으로 다시 인코딩합니다.
ImageResizer에서 원본 파일을 제공하려는 경우 전체 프로세스를 건너 뛰는 것은 다른 질문입니다. 아래에서 대답하려고합니다.
다음과 같은 주요 목표가 있습니다. 소스 이미지 파일의 너비와 높이를 발견하려면 최소한 부분적으로 디코딩해야합니다.
이 최적화 제한된 상황
또한 결과를 캐시하지 않는 한이 '최적화'는 실제로 응답 시간 또는 서버 측 성능을 향상시키지 못합니다. 차원 데이터는 별도로 디코딩해야하므로 차원 일치가 발생했는지 여부에 관계없이 모든 요청에 균일하고 중요한 오버 헤드가 추가됩니다.
내가 유용하다고 생각하는 유일한 상황은 Photoshop에서 압축을 최적화하는 데 많은 시간을 소비하고 필요하지 않으면 ImageResizer가이를 만지지 않도록하려는 경우입니다. 관심이 있다면 해당 시나리오에 URL을 적용하지 마십시오. 또는 원래 바이트를 그대로 유지하려면 process=no
으로 설정하십시오.
확실히 이것을 할 수있는 플러그인을 만들 수 있습니다. 하지만 많은 사람들이 사용하기를 원하는 것이 아니며 순익이 될 사용 시나리오를 기대할 수 없습니다.그냥 Config.Current.Pipeline.PreHandleImage
이벤트를 처리하고 e.GetSourceImage()
에 의해 반환 된 스트림을 구문 분석 코드 e.ResizeImageToStream
교체, 앞으로 급락 할 경우
, Config.Current.GetImageBuilder().GetFinalSize()
에 비교하여 치수 논리를 (적용 후 스트림을 재설정하고 다음과 같이 원하는 경우는 그대로 복사 :
using (Stream source = e.GetSourceImage())
StreamExtensions.CopyToStream(source,stream); //4KiB buffer
는 1 픽셀의 작은 크기를 조정할 수 있지만, 1 개 픽셀의 경계를 추가하는 등,하지만 가까이 당신이 까다로운 경우, 봐. GetFinalSize의 소스 코드이며 캔버스 범위 대신 이미지 경계를 반환합니다.
매우 답답한 답변 주셔서 감사합니다 :) 내 문제는 바로 그 것입니다. 우리는 이미 "손으로"최적화 된 이미지를 엉망으로 만들고 싶지 않지만, 문제에 대한 다른 해결책을 찾고 다시 시도하려고합니다. 그리고 다른 사람이 발견되지 않으면 나는 이제 내 플러그인을 만드는 방법을 알고있다 :)! 다시 한 번 감사드립니다! – bang
손으로 최적화 된 이미지를 엉망으로 만들고 싶지 않다면 쿼리 링을 추가하지 마십시오. ImageResizer가이를 만지지 않습니다. 서버는 처리중인 이미지가 직접 최적화되어 있는지 여부를 알 수 없으므로 요청한 결정을 내릴 수 없습니다. –
예, 알고 있습니다. 그러나 CMS도 관련되어 있습니다. :) .... – bang