」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 社交媒體自動生成圖片指南

社交媒體自動生成圖片指南

發佈於2025-04-14
瀏覽:366

我一直在考虑社交媒体图像。您知道,当您在Twitter,Facebook或iMessage等地共享链接时(可以)显示的图像。您本质上是在没有他们的情况下将钱留在桌子上,因为他们将一份带有一些小链接的常规帖子变成了一个帖子,上面有一个很大的Honkin注意力Grabbin图像,并带有大量可单击的区域。在网站上的任何图像中,社交媒体图像可能是网站上最受欢迎,最记忆,最被网络要求的图像的第一。

本质上是HTML的实现:

我想我再次考虑它,因为Github似乎有新的社交媒体卡。这些是新的,对吗?

这些github社交媒体图像显然是编程生成的。查看一个示例URL。

自动化

虽然我认为您可以从完全手工制作的定制社交媒体形象中获得很多轰动,但对于拥有很多页面的网站而言,这是不切实际的:博客,电子商务……您知道我的意思是什么。这样的网站的诀窍是通过以某种方式模板来自动化其创建。我过去提到过其他人的意愿,但让我们回顾一下:

Drew McLellan: Dynamic Social Sharing Images
  • Vercel: Open Graph Image as a Service
  • Phil Hawksworth: social-image-generator
  • Ryan Filler: Automatic Social Share Images
  • 您知道所有这些共同之处吗? puppeteer。

用作社交媒体映像? 我喜欢这个想法,但是这意味着可以访问一直在运行的节点服务器(Puppeteer在节点上运行),或者您可以作为无服务器函数点击。因此,难怪这个想法引起了jamstack人群的共鸣,他们已经习惯了运行构建过程和利用无服务器功能之类的事情。

我认为在URL上“托管”无服务器函数的想法 - 并传递通过URL参数在屏幕截图中包含的内容的动态值也很聪明。 SVG路由 我有点挖掘使用SVG作为您模板的社交媒体图像的事物的想法,部分是因为它具有如此固定的坐标,可以在内部设计,这与我的心理模型相匹配,以使您需要设计社交媒体图像所需的确切维度。我喜欢SVG如此合并。

乔治·弗朗西斯(George Francis)博客“创建自己的生成SVG社交图像”,这是所有这些都很好地结合在一起的绝妙例子,并带有随机化和奇思妙想。我也喜欢可满足的技巧,使其成为一次性屏幕截图的有用工具。

我也涉足动态SVG创建:在我们的会议网站上查看此会议页面。

不幸的是,SVG不是社交媒体图像的支持图像格式。以下是Twitter:

在卡中使用的图像URL。图像的大小必须小于5MB。支持JPG,PNG,WebP和GIF格式。仅使用动画GIF的第一帧。不支持SVG。

仍然,在SVG中组成/模板可能很酷。您将其转换为另一种格式以供最终使用。一旦

是SVG,从SVG到PNG的转换几乎很容易。就我而言,我使用了在构建过程中运行的SVG2PNG和非常小的Gulp任务。

wordpress呢?

我没有WordPress网站的构建过程 - 至少不是每次发布或更新帖子时运行的一个。但是WordPress将从动态的社交媒体图像中受益于

(在我的世界中)。

并不是我现在没有它们。 Jetpack在使这项工作很好的过程中有很长的路要走。它使《社交媒体形象》的“特色图像”成为了我的预览,并自动到社交网络。这是我对此进行的视频。那会让我到一个附着特色图像并很好地显示的地方。

,但并不能自动化他们的创建。有时,仅定制图形就是要走的路(上面的图形可能就是一个很好的例子),但也许更常见的模板卡是必经之路。

幸运的是,我从Daniel Post那里抓住了WordPress的社交图像生成器。看看如何花哨:

这正是WordPress所需的!
丹尼尔本人帮助我创建了一个针对CSS-Tricks的自定义模板。我有一个巨大的梦想,其中有一堆模板可供选择,其中包含标题,作者,选择的引号,特色图像和其他内容。到目前为止,我们仅定居两个,一个带有标题和作者的模板,以及带有特色图像,标题和作者的模板。这些图像是由该元数据创建的:

这不是木偶。这甚至不是Phantomjs供电的SVGTOPNG。这是PHP生成的图像!甚至不是想象中的,而是直截了当的GD,这是PHP中的东西。因此,这些图像不是用任何形式的语法创建的,这些语法可能对前端开发人员感到舒适。最好使用其中一个模板,但是如果您想了解我的自定义版本是如何编码的(Daniel),Lemme知道,我可以在公共场所发布代码。

很酷的结果,对?

我明白为什么必须这样构建它:它使用的是WordPress可以运行的任何技术。这非常具有WordPress的精神。但这确实使我希望创建模板可以以更现代的方式完成。就像如果您的社交媒体映像的模板就像其他模板文件一样,您的社交媒体图像的模板就像social-image.php一样,那不是很酷吗?您是否使用所有普通的WordPress API来模板和设计该页面?几乎像ACF块?并且它获取屏幕截图并使用了吗?我会为你回答:是的,那太酷了。
最新教學 更多>
  • 如何從2D數組中提取元素?使用另一數組的索引
    如何從2D數組中提取元素?使用另一數組的索引
    Using NumPy Array as Indices for the 2nd Dimension of Another ArrayTo extract specific elements from a 2D array based on indices provided by a second ...
    程式設計 發佈於2025-05-05
  • 在程序退出之前,我需要在C ++中明確刪除堆的堆分配嗎?
    在程序退出之前,我需要在C ++中明確刪除堆的堆分配嗎?
    在C中的顯式刪除 在C中的動態內存分配時,開發人員通常會想知道是否需要手動調用“ delete”操作員在heap-exprogal exit exit上。本文深入研究了這個主題。 在C主函數中,使用了動態分配變量(HEAP內存)的指針。當應用程序退出時,此內存是否會自動發布?通常,是。但是,即使在...
    程式設計 發佈於2025-05-05
  • Java中Lambda表達式為何需要“final”或“有效final”變量?
    Java中Lambda表達式為何需要“final”或“有效final”變量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    程式設計 發佈於2025-05-05
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-05-05
  • MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    在兩個條件下插入或更新或更新 solution:的答案在於mysql的插入中...在重複鍵更新語法上。如果不存在匹配行或更新現有行,則此功能強大的功能可以通過插入新行來進行有效的數據操作。如果違反了唯一的密鑰約束。 實現所需的行為,該表必須具有唯一的鍵定義(在這種情況下為'名稱'...
    程式設計 發佈於2025-05-05
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確...
    程式設計 發佈於2025-05-05
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-05-05
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-05-05
  • 解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    程式設計 發佈於2025-05-05
  • Python不會對超範圍子串切片報錯的原因
    Python不會對超範圍子串切片報錯的原因
    在python中用索引切片範圍:二重性和空序列索引單個元素不同,該元素會引起錯誤,切片在序列的邊界之外沒有。 這種行為源於索引和切片之間的基本差異。索引一個序列,例如“示例” [3],返回一個項目。但是,切片序列(例如“示例” [3:4])返回項目的子序列。 索引不存在的元素時,例如“示例” [9...
    程式設計 發佈於2025-05-05
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-05-05
  • PHP與C++函數重載處理的區別
    PHP與C++函數重載處理的區別
    作為經驗豐富的C開發人員脫離謎題,您可能會遇到功能超載的概念。這個概念雖然在C中普遍,但在PHP中構成了獨特的挑戰。讓我們深入研究PHP功能過載的複雜性,並探索其提供的可能性。 在PHP中理解php的方法在PHP中,函數超載的概念(如C等語言)不存在。函數簽名僅由其名稱定義,而與他們的參數列表無關...
    程式設計 發佈於2025-05-05
  • Java為何無法創建泛型數組?
    Java為何無法創建泛型數組?
    通用陣列創建錯誤 arrayList [2]; JAVA報告了“通用數組創建”錯誤。為什麼不允許這樣做? 答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<my...
    程式設計 發佈於2025-05-05
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-05
  • 如何簡化PHP中的JSON解析以獲取多維陣列?
    如何簡化PHP中的JSON解析以獲取多維陣列?
    php 試圖在PHP中解析JSON數據的JSON可能具有挑戰性,尤其是在處理多維數組時。要簡化過程,建議將JSON作為數組而不是對象解析。 執行此操作,將JSON_DECODE函數與第二個參數設置為true:[&&&&& && &&&&& json = JSON = JSON_DECODE($ ...
    程式設計 發佈於2025-05-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3