0

내 웹 사이트는 좋은 방법으로 사용자 목록을 표시 할 수 있습니다. 페이스 북이 페이지를 크롤링 할 때facebook crawler에 대한 사용자 정의 이미지를 생성하는 방법은 무엇입니까?

Coludik panel

, 내가 좋아하는 것까지 : 페이지에서 다른 무엇보다도,이 같은 소재 디자인 시트 (이미지, 텍스트 및 목록의 일부 동적 매개 변수)를 표시 (또는 조금 더 단순한) 무언가를 제공하십시오. 그리고 여러분이 보게되는 것이 클라이언트 측에만 있기 때문에 분명히 동적으로 생성되어야합니다. 왼쪽 상단 모서리의 미리보기 이미지가 너무 작아서 Facebook에만 제공되지 않습니다. 그 효과는 그리 만족스럽지 않을 것이다.

이것을 달성하는 것이 기술적으로 가능합니까? 일부 도서관에서 그 작업을 수행 했습니까?

+0

당신은 FB가 FB에서 어떻게 렌더링되는지 제어 할 수 있습니까? IINM은 "공유 이미지"(및 기타)를 사용자 정의 할 수있는 표준 [Open Graph 마크 업] (https://developers.facebook.com/docs/sharing/webmasters)을 제외하고 가능한 다른 "레이아웃"입니다. 광고를하십시오 (그들은 당신의 "포스트"가 광고 될 방법에 대한 몇 가지 옵션을 제공합니다). – EdSF

+0

아니 내 질문에 어떻게 페이스 북의 측면에서 발생하지 않습니다. 이미지 URL을 제공해야한다는 것을 알고 있습니다. 내가 원하는 것은이 이미지를 동적으로 생성 한 다음 스트림을 통해 공급할 수있게하는 것입니다. 하지만 어떻게 서버 측에서이 이미지를 생성합니까? 도움이되는 라이브러리가 있습니까? 벡터화되어 이미지로 내보낼 수 있습니까? –

+0

[Image resizer] (https://imageresizing.net/)와 같은 것을 살펴볼 수 있습니다. Hth ... – EdSF

답변

0

사용자가 특정 영화에 투표를 나누길 원하는 웹 응용 프로그램 중 하나에서 비슷한 문제가있었습니다.

<meta property="og:image" content="@share_image" /> 
<meta property="og:site_name" content="@SystemResource.application_name" /> 
<meta property="og:url" content="@share_url" /> 
<meta property="og:type" content="article" /> 
<meta property="og:title" content="@share_title" /> 
<meta property="og:description" content="@Model.review_text" /> 

@share_image 영화 커버와 사용자의 투표 (1-10)와 이미지에 URL을 포함하고 그 위에 : 내가 생각 해낸 것은 다음 메타 헤더가 각 사용자의 투표에 대해 고유 한 페이지를 만드는 것이 었습니다 .

내가 생성 내 사용자가 투표를하고이 다음과 같은 방식으로 이루어집니다 @share_image :

public static ImageCodecInfo GetEncoderInfo(ImageFormat format) 
{ 
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); 
    foreach (ImageCodecInfo codec in codecs) 
    { 
     if (codec.FormatID == format.Guid) 
     { 
      return codec; 
     } 
    } 
    return null; 
} 

를 사용하여 그래픽 클래스에이 참조에 : 당신은 또한이 방법이 필요합니다

// main image 
Image canvas = Bitmap.FromFile(configData.MainImageAbolutePath); 

// vote image (circles with numbers from 1 to 10) 
Bitmap smallImg = new Bitmap(configData.OverlayImageAbolutePath); 

// create new image 
using (Graphics gr = Graphics.FromImage(canvas)) 
{ 
    // here you can play with quality 
    gr.SmoothingMode = SmoothingMode.HighQuality; 
    gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 

    // place vote image on top of the cover using x and y coordinates 
    gr.DrawImage(smallImg, new Point(configData.X, configData.Y)); 
} 
// here you can play with quality 
ImageCodecInfo jgpEncoder = GetEncoderInfo(ImageFormat.Jpeg); 
Encoder myEncoder = Encoder.Quality; 
EncoderParameters myEncoderParameters = new EncoderParameters(1); 
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); 
myEncoderParameters.Param[0] = myEncoderParameter; 

// generate our @share_image 
canvas.Save(configData.DestinationImageAbolutePath, jgpEncoder, myEncoderParameters); 

텍스트 및 기타 요소를 추가하십시오 : https://msdn.microsoft.com/en-us/library/system.drawing.graphics(v=vs.110).aspx

+0

감사합니다. 나는 1 주간의 여행을 떠난다. 그러나 나는 이것을 되돌릴 때 이것을 반드시 검토 할 것이다. –

+1

이것은 좋은 출발점이었습니다. 고맙습니다. MVC 작업 메서드에서 이미지를 PNG로 반환하는 배선을 추가 했으므로 ImageCodecInfo 부분이 필요하지 않았습니다. –

관련 문제