


Der von FullScreenshot() aus dem chromedp-Paket generierte Screenshot ist zu verschwommen. Wie kann ich ihn verbessern?
php-Editor Yuzi hat eine Frage zum chromedp-Paket, die beantwortet werden muss. Die Frage ist, ob der mit FullScreenshot() erstellte Screenshot zu unscharf ist und ein verbesserter Ansatz erforderlich ist. Bei Verwendung des chromedp-Pakets ist die Qualität der generierten Screenshots möglicherweise nicht wie erwartet, was an einer falschen Konfiguration oder Parametereinstellungen liegen kann. Hier sind einige mögliche Verbesserungen, die Ihnen helfen sollen, klarere Screenshots zu erhalten.
Frageninhalt
Wie der Titel schon sagt, hier ist das Ergebnis und mein Code. Ich verwende übrigens eine sehr preisgünstige Maschine.
func main() { chromectx, _ := chromedp.newcontext(context.background()) emulation.setdevicemetricsoverride(1920, 1080, 1.0, false).do(chromectx) var width, height int64 var b []byte err := chromedp.run(chromectx, chromedp.emulateviewport(10, 10), chromedp.navigate(`the content of the file is in the code block below.html`), chromedp.evaluateasdevtools(`document.documentelement.scrollwidth`, &width), chromedp.emulateviewport(width, 10), chromedp.evaluateasdevtools(`document.documentelement.scrollheight`, &height), chromedp.emulateviewport(width, height), chromedp.fullscreenshot(&b, 100), ) if err != nil { log.fatal(err) } err = ioutil.writefile("test.png", b, 0777) if err != nil { log.fatal(err) } }
<!DOCTYPE html> <head> <meta charset="utf-8"> </head> <body> <div id="main"> # 123 123 $\sin(x)=\sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!}x^{2n+1} \sin(x)=\sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!}x^{2n+1} \sin(x)=\sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!}x^{2n+1} \sin(x)=\sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!}x^{2n+1}$ </div> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/markdown-it-latex2img.min.js" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/markdown-it.min.js" crossorigin="anonymous"></script> <script> var main = document.getElementById("main"); var md = window.markdownit({ html: true }); md.use(window.markdownitLatex2img, { style: "filter: opacity(75%);transform:scale(0.75);text-align:center" }); var result = md.render(main.innerHTML); main.innerHTML = result; </script> </body>
Ich dachte, es gäbe vielleicht eine dpi-Einstellung? Oder liegt es daran, dass meine Maschine zu schwach ist? Leider habe ich keine Ressourcen mehr, um die Wahrheit herauszufinden. Bitte helfen Sie mir, wie kann ich den Screenshot klarer machen?
Die Lösung
hat nichts mit der Konfiguration Ihrer Maschine zu tun. Durch das Hinzufügen von devicescalefactor
sieht das Bild besser aus. Siehe Demo unten:
package main import ( "context" "log" "os" "github.com/chromedp/cdproto/emulation" "github.com/chromedp/chromedp" ) func main() { ctx, cancel := chromedp.newcontext(context.background(), chromedp.withdebugf(log.printf)) defer cancel() var width, height int64 var b []byte err := chromedp.run(ctx, chromedp.emulateviewport(10, 10), chromedp.navigate(`the content of the file is in the code block below.html`), chromedp.evaluateasdevtools(`document.documentelement.scrollwidth`, &width), chromedp.actionfunc(func(ctx context.context) error { return chromedp.emulateviewport(width, 10).do(ctx) }), chromedp.evaluateasdevtools(`document.documentelement.scrollheight`, &height), chromedp.actionfunc(func(ctx context.context) error { return chromedp.emulateviewport(width, height, func(sdmop *emulation.setdevicemetricsoverrideparams, steep *emulation.settouchemulationenabledparams) { sdmop.devicescalefactor = 3 }).do(ctx) }), chromedp.fullscreenshot(&b, 100), ) if err != nil { log.fatal(err) } err = os.writefile("test.png", b, 0o777) if err != nil { log.fatal(err) } }
Ein größeres devicescalefactor
führt zu einem größeren Bild:
$ file *.png 7e9rfcQO.png: PNG image data, 797 x 144, 8-bit/color RGBA, non-interlaced test.png: PNG image data, 2391 x 432, 8-bit/color RGBA, non-interlaced
Andere Hinweise:
- In Ihrem Code ist
emulation.setdevicemetricsoverride(1920, 1080, 1.0, false).do(chromectx)
返回chromedp.errinvalidcontext
falsch. Es kann vollständig entfernt werden. - Machen Sie in Ihrem Code
chromedp.emulateviewport
的所有调用均通过参数width: 0
和height: 0
传递。应将其包装在chromedp.actionfunc
中以获取更新的width
和height
aus.
Das obige ist der detaillierte Inhalt vonDer von FullScreenshot() aus dem chromedp-Paket generierte Screenshot ist zu verschwommen. Wie kann ich ihn verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Dieser Artikel erläutert die Paketimportmechanismen von Go: benannte Importe (z. B. importieren & quot; fmt & quot;) und leere Importe (z. B. Import _ & quot; fmt & quot;). Benannte Importe machen Paketinhalte zugänglich, während leere Importe nur T ausführen

In diesem Artikel werden die Newflash () -Funktion von BeEGO für die Übertragung zwischen PAGE in Webanwendungen erläutert. Es konzentriert sich auf die Verwendung von Newflash (), um temporäre Nachrichten (Erfolg, Fehler, Warnung) zwischen den Controllern anzuzeigen und den Sitzungsmechanismus zu nutzen. Limita

Dieser Artikel beschreibt die effiziente Konvertierung von MySQL -Abfrageergebnissen in GO -Strukturscheiben. Es wird unter Verwendung der SCAN -Methode von Datenbank/SQL zur optimalen Leistung hervorgehoben, wobei die manuelle Parsen vermieden wird. Best Practices für die Struktur -Feldzuordnung mithilfe von DB -Tags und Robus

Dieser Artikel zeigt, dass Mocks und Stubs in GO für Unit -Tests erstellen. Es betont die Verwendung von Schnittstellen, liefert Beispiele für Mock -Implementierungen und diskutiert Best Practices wie die Fokussierung von Mocks und die Verwendung von Assertion -Bibliotheken. Die Articl

In diesem Artikel werden die benutzerdefinierten Typ -Einschränkungen von GO für Generika untersucht. Es wird beschrieben, wie Schnittstellen die minimalen Typanforderungen für generische Funktionen definieren und die Sicherheitstypsicherheit und die Wiederverwendbarkeit von Code verbessern. Der Artikel erörtert auch Einschränkungen und Best Practices

Dieser Artikel beschreibt effizientes Dateischreiben in Go und vergleicht OS.WriteFile (geeignet für kleine Dateien) mit OS.openfile und gepufferter Schreibvorgänge (optimal für große Dateien). Es betont eine robuste Fehlerbehandlung, die Verwendung von Aufschub und Überprüfung auf bestimmte Fehler.

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

In diesem Artikel wird die Verwendung von Tracing -Tools zur Analyse von GO -Anwendungsausführungsfluss untersucht. Es werden manuelle und automatische Instrumentierungstechniken, den Vergleich von Tools wie Jaeger, Zipkin und Opentelemetrie erörtert und die effektive Datenvisualisierung hervorheben
