استخدم phantomjs لإخراج صفحات الويب HTML كصور
I. الخلفية
كيفية إنشاء صورة في برنامج Mini ومشاركتها مع دائرة أصدقائك؟ في الوقت الحاضر ، يبدو أنه لا يوجد حل جيد للواجهة الأمامية ، لذلك لا يمكن دعمه إلا من قبل الواجهة الخلفية. فكيف يمكن لعبه؟
توليد الصور أبسط
في السيناريوهات البسيطة ، يمكنك استخدام JDK مباشرة لدعمها ، بشكل عام ، لا يوجد منطق معقد للغاية.
لقد كتبت منطقًا لتوليف الصور من قبل ، باستخدام AWT للتنفيذ: تخليق الصور
قوالب عامة ومعقدة
يمكن دعم تلك البسيطة مباشرة ، ولكن أكثر تعقيدًا ، وهو بلا شك مثير للاشمئزاز للسماح للواجهة الخلفية بدعمها. لقد بحثت أيضًا عن بعض المكتبات مفتوحة المصدر لتقديم HTML على Github. لا أعرف ما إذا كان هذا هو الموقف الخاطئ أو شيء من هذا القبيل ، لكن لم يكن لدي نتيجة مرضية للغاية.
كيف تدعم القوالب المعقدة الآن؟
وهذا يعني أن دليل هذه المقالة ، باستخدام PhantomJs لتحقيق عرض HTML ، ودعم توليد ملفات PDF ، وتوليد الصور ، وحوض التحليل على ما يرام. بعد ذلك ، سوف نوضح كيفية الجمع بين phantomjs لإنشاء صفحة ويب لتقديمها إلى صور.
الثاني. تحضير المتطلب السابق
1. تثبيت Phantom.js
# 1. تنزيل ## نظام MAC WGET https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip## Linux Wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1.1-linux-x86_64.tar.bz2## نظام Windows ## لا تلعب بعد الآن ، إنه لا معنى له# 2. يحدث ، قم بتثبيت ما يلي #yum -y تثبيت Bzip2# 3. تثبيت ## ليكون بسيطًا ، انتقل إلى دليل Bin Phantomjs-2.1.1.1-linux-x86_64/bin/phantomjs/usr/local/bin# 4.
2. تكوين تبعية Java
تكوين Maven إضافة تبعيات
<!-phantomjs-> <redency> <roupiD> org.seleniumhq.selenium </rougeid> <Stifactid> selenium-java </shintifactid> <الإصدار> <sperive> 2.1.0 </version> </reperence> <spositories> <Spository> <Id> jitpack.io </id> <Url> https://jitpack.io </url> </ropository> </spositories>
يبدأ
منطق استدعاء phantomjs بشكل أساسي لتنفيذ صورة عرض HTML كما يلي
الطبقة العامة html2ImagebyJswrapper {private static phantomjsdriver webdriver = getPhantomJs () ؛ Private phantomjsdriver getPhantomjs () {// قم بتعيين المعلمات اللازمة DesiredCapabilities dcaps = new DesiredCapabilities () ؛ // شهادة SSSL تدعم dcaps.setCapability ("accountsslcerts" ، true) ؛ // شاشات الشاشة تدعم dcaps.setCapability ("TakessCreenshot" ، true) ؛ // CSS Search يدعم DCAPS.SetCapability ("CSSSeSeSeSeleCtorSenabled" ، True) ؛ // JS يدعم dcaps.setjavaScriptenabled (true) ؛ // دعم برنامج التشغيل (تشير المعلمة الثانية إلى المسار الذي يوجد فيه محرك PhantomJS ، والذي/أين يمكن عرض phantomjs) // يكتب FixMe تنفيذ هنا ، يمكنك التفكير في تحديد ما إذا كان النظام مثبتًا والحصول على المسار المقابل أو فتح المسار المحدد dcaps.setCapability (phantomjsdriverservic.phantomjs_exect_exect_praphar ، "/usr/local/bin/phantomjs") ؛ // إنشاء كائن متصفح بين لا يهدأ إرجاع phantomjsdriver جديد (DCAPS) ؛ } static static bufferedimage renderhtml2Image (url url) يلقي ioException {webdriver.get (url) ؛ ملف الملف = webdriver.getScreenshotas (OutputType.file) ؛ إرجاع Imageio.Read (ملف) ؛ }}حالة الاختبار
public class base64Util {public static string encode (bufferedImage bufferedImage ، string imgtype) يلقي ioException {bytearrayoutputstream outputStream = new bytearrayoutputstream () ؛ imageio.write (bufferedImage ، imgtype ، outputStream) ؛ ترميز الإرجاع (OutputStream) ؛ } encode Static String Public Encode (ByteArrayoutputStream OutputStream) {return base64.getencoder (). EncodetoString (OutputStream.TobyTearray ()) ؛ }}@testpublic void testrender () يلقي ioException {bufferedImage img = null ؛ لـ (int i = 0 ؛ i <20 ؛ ++ i) {String url = "https://my.oschina.net/u/566591/blog/1580020" ؛ بدء طويل = system.currentTimeMillis () ؛ img = html2Imagebyjswrapper.renderHtml2Image (url) ؛ End Long = System.CurrentTimeMillis () ؛ System.out.println ("التكلفة:" + (end - start)) ؛ } system.out.println (BASE64UTIL.ENCODE (IMG ، "PNG")) ؛}لن أنشر الصور التي تم إنشاؤها. إذا كنت مهتمًا ، فيمكنك الذهاب مباشرة إلى موقع الويب الخاص بي لاختباره.
ثالثا. اختبار الشبكة
تم نشر تطبيق ويب بسيط على خادم Alibaba Cloud ، مما يدعم وظيفة HTML Forceting Pictures ؛ منذ أن اشتريت نسخة المتسول والقالب الأمامي الذي استخدمته كان أكثر برودة ، فتح ببطء.
عملية العرض:
خامسا المشروع
عنوان المشروع:
وسائط سريعة
QuickMedia هو مشروع مفتوح المصدر يركز على الرسومات والنصوص والصوت والفيديو ومعالجة رمز الاستجابة السريعة وغيرها من خدمات الوسائط المتعددة.
تم اختبار الرمز أعلاه من قبلنا. إذا كنت لا تزال لا تفهم ما تحتاج إلى مناقشته ، فيمكنك ترك رسالة أدناه. شكرا لدعمكم ل wulin.com.