From d8c306a651ee233754549d05dc7edbe5312a44f7 Mon Sep 17 00:00:00 2001
From: quyixiao <2621048238@qq.com>
Date: Thu, 24 Dec 2020 17:25:22 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 62 ++++++++++++
.../lz/common/utils/CutLongImageUtils.java | 91 ++++++++++++++++++
.../java/com/lz/common/utils/OSUtils.java | 95 +++++++++++++++++++
.../app/controller/TestController.java | 9 ++
4 files changed, 257 insertions(+)
create mode 100644 src/main/java/com/lz/common/utils/CutLongImageUtils.java
create mode 100644 src/main/java/com/lz/common/utils/OSUtils.java
diff --git a/pom.xml b/pom.xml
index d5043898..030e473c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -267,6 +267,68 @@
5.1.3.201810200350-r
+
+
+ com.lz.crawler
+ crawler-tools
+ 2.9-SNAPSHOT
+
+
+
+
+
+
+
+ org.seleniumhq.selenium
+ selenium-java
+ 3.141.59
+
+
+ org.seleniumhq.selenium
+ selenium-support
+ 3.141.59
+
+
+
+ org.seleniumhq.selenium
+ selenium-api
+ 3.141.59
+
+
+ org.seleniumhq.selenium
+ selenium-remote-driver
+ 3.141.59
+
+
+ org.seleniumhq.selenium
+ selenium-chrome-driver
+ 3.141.59
+
+
+ org.seleniumhq.selenium
+ selenium-firefox-driver
+ 3.141.59
+
+
+ com.codeborne
+ phantomjsdriver
+ 1.4.4
+
+
+
+ org.seleniumhq.selenium
+ selenium-htmlunit-driver
+ 2.52.0
+
+
+
+
+ com.google.guava
+ guava
+ 23.0
+
+
+
diff --git a/src/main/java/com/lz/common/utils/CutLongImageUtils.java b/src/main/java/com/lz/common/utils/CutLongImageUtils.java
new file mode 100644
index 00000000..eb41dcc7
--- /dev/null
+++ b/src/main/java/com/lz/common/utils/CutLongImageUtils.java
@@ -0,0 +1,91 @@
+package com.lz.common.utils;
+
+import com.admin.crawler.engine.utils.ToolsOrderUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.openqa.selenium.Dimension;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+import org.openqa.selenium.phantomjs.PhantomJSDriver;
+import org.openqa.selenium.phantomjs.PhantomJSDriverService;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+
+
+@Slf4j
+public class CutLongImageUtils {
+
+ public static String getLongImageUrl(String httpUrl) {
+ String url = null;
+ //设置必要参数
+ DesiredCapabilities dcaps = new DesiredCapabilities();
+ //ssl证书支持
+ dcaps.setCapability("acceptSslCerts", true);
+ //截屏支持
+ dcaps.setCapability("takesScreenshot", true);
+ //css搜索支持
+ dcaps.setCapability("cssSelectorsEnabled", true);
+ //js支持
+ dcaps.setJavascriptEnabled(true);
+ if(OSUtils.isMacOSX()){
+ //驱动支持(第二参数表明的是你的phantomjs引擎所在的路径,使用whereis phantomjs可以查看)
+ dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/local/bin/phantomjs");
+ }else if(OSUtils.isWindows()){
+ dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "xxxxxxxxx");
+ }else if(OSUtils.isLinux()){
+ dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/bin/phantomjs");
+ }
+ //驱动支持
+ //创建无界面浏览器对象
+ PhantomJSDriver driver = new PhantomJSDriver(dcaps);
+ String fileName1 = null;
+ try {
+ // 让浏览器访问空间主页
+ //设置隐性等待(作用于全局)
+ driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
+
+ driver.get(httpUrl);
+
+
+ Long width = (Long) driver.executeScript("return document.body.parentNode.scrollWidth");
+ Long height = (Long) driver.executeScript("return document.body.parentNode.scrollHeight");
+ System.out.println("width=" + width + ",height=" + height);
+ Dimension dimension = new Dimension(width.intValue(), height.intValue());
+ driver.manage().window().setSize(dimension);
+
+ String userHome = System.getProperty("user.home");
+ if (!userHome.endsWith("/")) {
+ userHome = userHome + "/";
+ }
+ userHome = userHome + "captcha/";
+ fileName1 = userHome + ToolsOrderUtil.getUserPoolOrder("pic") + "screenshot1.png";
+ log.info("文件名 = " + fileName1);
+ File screenshot = (File) ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
+ BufferedImage fullImg = ImageIO.read(screenshot);
+ ImageIO.write(fullImg, "png", screenshot);
+ File screenshotLocation = new File(fileName1);
+ FileUtils.copyFile(screenshot, screenshotLocation);
+ url = OSSUtils.uploadImage(fileName1);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ //关闭并退出浏览器
+ System.out.println("=============================");
+ driver.close();
+ driver.quit();
+ File file = new File(fileName1);
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+ return url;
+ }
+
+ public static void main(String[] args) {
+ System.out.println(getLongImageUrl("https://www.csdn.net/"));
+ }
+}
diff --git a/src/main/java/com/lz/common/utils/OSUtils.java b/src/main/java/com/lz/common/utils/OSUtils.java
new file mode 100644
index 00000000..ea18f9f7
--- /dev/null
+++ b/src/main/java/com/lz/common/utils/OSUtils.java
@@ -0,0 +1,95 @@
+package com.lz.common.utils;
+
+
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 操作系统类:
+ * 获取System.getProperty("os.name")对应的操作系统
+ *
+ * @author isea533
+ */
+public class OSUtils {
+
+ private static final boolean osIsMacOsX;
+ private static final boolean osIsWindows;
+ private static final boolean osIsWindowsXP;
+ private static final boolean osIsWindows2003;
+ private static final boolean osIsWindowsVista;
+ private static final boolean osIsLinux;
+ private static final boolean osIsWindowsWin7;
+ private static final boolean osIsWindowsWin8;
+ private static final boolean osIsWindowsWin10;
+
+ static {
+ String os = System.getProperty("os.name");
+ if (os != null)
+ os = os.toLowerCase();
+ osIsMacOsX = "mac os x".equals(os);
+ osIsWindows = os != null && os.indexOf("windows") != -1;
+ osIsWindowsXP = "windows xp".equals(os);
+ osIsWindows2003 = "windows 2003".equals(os);
+ osIsWindowsVista = "windows vista".equals(os);
+ osIsLinux = os != null && os.indexOf("linux") != -1;
+ osIsWindowsWin7 = os != null && os.indexOf("windows 7") != -1;
+ osIsWindowsWin8 = os != null && os.indexOf("windows 8") != -1;
+ osIsWindowsWin10 = os != null && os.indexOf("windows 10") != -1;
+ }
+
+
+ public static boolean isMacOSX() {
+ return osIsMacOsX;
+ }
+
+ public static boolean isWindows() {
+ return osIsWindows;
+ }
+
+ public static boolean isWindowsXP() {
+ return osIsWindowsXP;
+ }
+
+ public static boolean isWindows2003() {
+ return osIsWindows2003;
+ }
+
+ public static boolean isWindowsVista() {
+ return osIsWindowsVista;
+ }
+
+ public static boolean isLinux() {
+ return osIsLinux;
+ }
+
+ public static boolean IsWindowsWin7() {
+ return osIsWindowsWin7;
+ }
+
+ public static boolean IsWindowsWin8() {
+ return osIsWindowsWin8;
+ }
+
+ public static boolean IsWindowsWin10() {
+ return osIsWindowsWin10;
+ }
+
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ System.out.println(OSUtils.isMacOSX());
+ }
+
+
+ public static void sleepMilliSecond(int min, int max) {
+ try {
+ Random random = new Random();
+ int time = random.nextInt(max) % (max - min + 1) + min;
+ TimeUnit.MILLISECONDS.sleep(time);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/lz/modules/app/controller/TestController.java b/src/main/java/com/lz/modules/app/controller/TestController.java
index 18083c1f..808fac8a 100644
--- a/src/main/java/com/lz/modules/app/controller/TestController.java
+++ b/src/main/java/com/lz/modules/app/controller/TestController.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dingtalk.api.response.OapiCrmAuthGroupMemberListResponse;
+import com.lz.common.utils.CutLongImageUtils;
import com.lz.common.utils.R;
import com.lz.common.utils.StringUtil;
import com.lz.modules.app.dao.DepartmentsDao;
@@ -330,4 +331,12 @@ public class TestController {
public R commentList(TaskModel taskModel) {
return staffRoleService.commentList(taskModel);
}
+
+ //http://localhost:8080/lz_management/test/cutimage
+ @RequestMapping("/test/cutimage")
+ public R cutimage() {
+ String url = CutLongImageUtils.getLongImageUrl("https://www.baidu.com/");
+ return R.ok().put("url",url);
+
+ }
}