簡體   English   中英

如何為Facebook搜尋器生成自定義圖像?

[英]How to generate a custom image for facebook crawler?

我的網站能夠以一種不錯的方式顯示用戶列表。 在頁面上,除其他外,我顯示這樣的材料設計表(圖像,一些文本和清單的一些動態參數):

考魯迪克面板

當Facebook爬網此頁面時,我想提供一個看起來像這樣(或更簡單)的東西,並且顯然必須動態地生成它,因為您看到的只是在客戶端。 左上角的縮略圖太小,無法單獨提供給Facebook。 效果不會很令人滿意。

在技​​術上可行嗎? 為此做了一些圖書館?

我在一個Web應用程序中遇到了類似的問題,我希望用戶共享對特定電影的投票。 我想到的是使用以下元標題為每個用戶投票創建一個唯一的頁面:

<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 ,它是通過以下方式完成的:

// 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);  

您還將需要此方法:

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

使用對Graphics類的此引用來添加文本和其他元素: https : //msdn.microsoft.com/zh-cn/library/system.drawing.graphics(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM