Ich hatte ähnliches Problem in einer der Web-Anwendungen, wo ich wollte, dass ein Benutzer seine Stimme über einen bestimmten Film teilen. Was ich herauskommen, war eine einzigartige Seite für jeden Benutzer Abstimmung mit den folgenden Meta-Header zu erstellen:
<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" />
Meine @share_image
enthält URL zu einem Bild mit Filmabdeckung und Benutzerbewertung (1-10) oben drauf .
ich generieren meine @share_image
, wenn der Benutzer eine Stimme abgegeben und es wird auf die folgende Weise:
// 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);
müssen Sie auch diese Methode:
public static ImageCodecInfo GetEncoderInfo(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
Mit diesem Verweis auf Graphics-Klasse füge Text und andere Elemente hinzu: https://msdn.microsoft.com/en-us/library/system.drawing.graphics(v=vs.110).aspx
Du meinst Kontrolle wie Facebook Dinge auf FB rendert? IINM, neben Standard [Open Graph Markup] (https://developers.facebook.com/docs/sharing/webmasters), wo Sie das "Bild teilen" (und mehr) anpassen können, ist das andere "Layout" möglich, wenn Sie mache Werbung (sie bieten ein paar Möglichkeiten, wie deine "Post" beworben wird). – EdSF
Nein meine Frage ist nicht, wie dies auf der Facebook-Seite passiert. Ich weiß, dass ich verpflichtet bin, eine Bild-URL anzugeben. Ich möchte dieses Bild dynamisch generieren und dann über einen Stream bereitstellen. Aber wie erstelle ich dieses Bild auf der Serverseite? Gibt es eine Bibliothek, die hilft? Kann es sogar vektoriell sein und zu einem Bild exportieren? –
Sie könnten in etwas wie [Image resizer] (https://imageresizing.net/) schauen. Hth ... – EdSF