2010-08-05 2 views
3

내 사이트에서 사용자가 사진을 업로드 할 수 있습니다. 나는 현재 사진을 압축하고 크기를 조정하여 거대한 파일이 아닌지 확인합니다. 그러나 이것은 다양한 차원의 사진을 만들어 내 생각에 사이트가 조금 "못 생겼습니다".공백으로 채워 넣지 않고 업로드 된 사진을 C#으로 어떻게 제곱합니까?

미리보기 이미지가 정사각형 이미지이지만 패딩을 사용하지 않았는지 확인하고 싶습니다. 엄지 손톱에 사진이 약간 손실되면 괜찮습니다. 나는 자르기가 필요하다는 것을 의미한다고해도 사진의 충실도를 높게 유지하고 싶습니다.

+2

사이트에서이 작업을 한 번 수행하면되는 작은 팁이 있습니다. 원본 이미지의 너비가 더 크면 각면에서 동일한 양을 자릅니다. 그러나 원본 이미지의 너비가 너비보다 높으면 위에서 아래보다 바닥에서 더 많이 자르고 내 경험에 따라 가치있는 세부 사항을 잃을 가능성이 적어집니다 (예 : 인물 사진에서 피곤하지 마세요.) – Carson63000

+0

@ Carson63000 - 당신이 기억하기에 좋은 포인트입니다. 고맙습니다! – Chaddeus

답변

3

나는이 정확한 일을 몇 가지 코드를 작성합니다. 종횡비를 유지하지 않고 크기를 조정하는 것이 매우 끔찍해 보였기 때문에 자르기를 선택했습니다. 나는 thumnail 이미지를 만들기 위해 다음 작물을 크기 조정을 수행

public Bitmap CreateThumbnail(Bitmap RawImage) 
    { 
     int width = RawImage.Width; 
     int height = RawImage.Height; 

     Size ThumbnailDimensions = new Size(); 
     ThumbnailDimensions.Width = 100; 
     ThumbnailDimensions.Height = 100; 

     Rectangle cropArea = new Rectangle(); 
     if (width > height) 
     {    
      cropArea.Width = height; 
      cropArea.Height = height; 
      cropArea.X = 0; 
      cropArea.Y = 0;     
     } 
     else if (width < height) 
     { 
      cropArea.Width = width; 
      cropArea.Height = width; 
      cropArea.X = 0; 
      cropArea.Y = 0; 
     } 
     if(width != height) Bitmap thumbnail = CropImage(RawImage, cropArea); 

     thumbnail = ResizeImage(thumbnail, ThumbnailDimensions); 
     return thumbnail; 
    } 

이 바로 다음 왼쪽 상단에서 작물 내 썸네일 크기로 크기를 조정합니다.

+0

그건 내가 뭘 찾고 있었는지, 고마워! – Chaddeus

+0

아무 문제 없어. – Adrian

+5

"CropImage"의 구현은 어디에 있습니까? – Andrey

-1

자르기보다는 div 또는 고정 된 정사각형 크기로 넣는 것이 좋습니다. 사각형 내부에 맞게 이미지의 크기를 조정하십시오.

자르기를 어떻게 결정 하시겠습니까? 왼쪽 위부터? 오른쪽 하단? 센터? 내가 상상

+0

클라이언트 성능 향상을 원하지 않습니다. 성능 문제입니다. 가장 왼쪽의 치수를 크기, 정사각형으로 사용하여 왼쪽 위부터자를 계획입니다. Carson6300이 말했듯이, 키가 크면 양쪽면이 똑같습니다. 너비가 너비보다 크면 대부분 바닥에서 자릅니다. – Chaddeus

+0

큰 이미지를 가져 와서 브라우저를 축소해도 여전히 큰 이미지가로드되는 경우 문제가 발생합니다. 몇 가지 이미지와 웹 사이트로드 속도 탱크를 곱하면됩니다. – Adrian

+0

@Chad, @antonlavy - 내 대답은 어디에서 클라이언트 쪽 배율이라고 했습니까? 대답의 소리에서 –

2

당신은 (중 시간와트 또는 ) 짧은 차원을하고, 자른 이미지를 만들기위한 당신의 차원으로, 본질적으로자를 수 있음을 사용한 후 이미지 크기를 조정해야합니다. 이미지 자르기의 예로는 this article을 확인하십시오. 또한 이미지 품질과 관련하여 this Stack Overflow question을 확인하십시오.

+0

큰 포인트입니다. 자르기 설정에 가장 짧은 치수를 사용하십시오. 감사. – Chaddeus

-1

사각형을 사각형으로 만들려면 가로 세로 비율이나 자르기 (또는 조합)를 유지하지 않고 채우기, 크기 조정을 수행해야합니다.

여기

http://snippets.dzone.com/posts/show/1484

을 자르기위한 몇 가지 코드입니다 (나는 Atalasoft 위해 일 - 우리 DotImage 사진 SDK에서), 그것은

AtalaImage img = new AtalaImage("filename.jpg"); 
AtalaImage img2 = new CropCommand(/*point and size of crop */).Apply(img).Image; 
img2.Save("filename", new JpegEncoder(quality), null);