문제

의문

ASP.NET MVC에서 이미지를 동적으로 크기를 조정하려면 어떻게해야합니까?

배경

이미 서버에있는 이미지에서 썸네일을 자동으로 만들려고합니다. asp.net webforms에서 나는 a를 만들었다 HTTPHandler 이 작업을 수행하고 동사를 추가합니다 web.config 모든 이미지 확장이 핸들러를 통과 할 수 있도록. 핸들러는 원본 이미지를 원한다면 일반적인 이미지 태그를 사용한다는 점에서 훌륭했습니다.

<img src="pic.jpg"/>

그러나 크기가 큰 이미지를 원한다면 다음을 사용합니다.

<img src="pic.jpg?width=320&height=240"/>

ASP.NET MVC에서 동일한 동작을 복제하는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 확실히 똑같이 재사용 할 수 있습니다 IHttpHandler. 당신은 단지 새로운 것이 필요합니다 Iroutehandler 들어오는 요청을 올바른 핸들러에 매핑하려면 :

public class ImageRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return new YourImageHttphandler();
    }
}

노선에서 다음을 추가하십시오.

routes.Add("Images", new Route("images/{*file}", new ImageRouteHandler()));

이제 모든 요청 /images (예 : /images/pic.jpg?width=320&height=240)는 기존 핸들러가 처리합니다. 분명히 전형적인 MVC 경로와 마찬가지로 합리적 인 경로와 일치하도록 경로 패턴을 변경할 수 있습니다.

다른 팁

사용 WebImage 들어온 수업 System.Web.Helpers.WebImage 당신은 이것을 달성 할 수 있습니다.

이 위대한 아이를 사용하여 크기가 조정 된 이미지를 즉시 출력 할 수 있습니다.

샘플 코드 :

public void GetPhotoThumbnail(int realtyId, int width, int height)
{
    // Loading photos’ info from database for specific Realty...
    var photos = DocumentSession.Query<File>().Where(f => f.RealtyId == realtyId);

    if (photos.Any())
    {
        var photo = photos.First();

        new WebImage(photo.Path)
            .Resize(width, height, false, true) // Resizing the image to 100x100 px on the fly...
            .Crop(1, 1) // Cropping it to remove 1px border at top and left sides (bug in WebImage)
            .Write();
    }

    // Loading a default photo for realties that don't have a Photo
        new WebImage(HostingEnvironment.MapPath(@"~/Content/images/no-photo100x100.png")).Write();
}

관점에서는 다음과 같은 것이 있습니다.

<img src="@Url.Action("GetPhotoThumbnail",
     new { realtyId = item.Id, width = 100, height = 100 })" />

그것에 대한 자세한 내용은 다음과 같습니다. ASP.NET MVC로 즉시 이미지 크기를 조정하십시오

ASP.NET 사이트에 훌륭한 자습서도 있습니다. ASP.NET 웹 페이지 (Razor) 사이트에서 이미지 작업.

MVC에서도 똑같이 할 수 있습니다. 이전과 같이 httphandler를 사용하거나 크기가 큰 이미지를 스트리밍하는 동작을 만들 수 있습니다.

그것이 나라면 크기 조정 방법으로 컨트롤러를 만들 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top