资讯动态

【办公类-130-01】20260510豆包图片去文字水印(叠图))

发布时间:2026/8/21 18:34:54 来源:尧图企业网站定制
背景需求搭档要做一个“教师讲故事比赛”的PPT背景。四选一搭档选了一张好看的这是纯图片不能修改的。直接放到PPT里。然后搭档又想了想又选了一张左下图但是要消除“活动方案几个字”我把这张图单独提出来要求去掉“活动方案”字样但是最终缺了标题用正确的标题和副标题重新做一张重新做图片图案又不一样了。最后搭档选了右下角一张第二天搭档说删掉“教师变成青年教师”然后搭档提出一个需求——不要水印我问问手机“千问”是否可以去掉水印这里面提到的“豆包付费”可以文字水印我不想花线同时也提到的网页“检查”模式下找图片的地址。‘把两张图片下载1、普通下载的图片右下角有“豆包AI生成”2、网页检查模式下载的图片左上角有“AI生成”虽然都有水印文字但是在不同的位置上所以可以裁剪拼图如果我不想用PPT裁剪是否可以做一个Python程序批量做图。测试图片 豆包图片有水印 下载网页上的图片下载网页-检查-src的图片重叠合并切掉左上角的水印 Deepseek、阿夏 20260511 from PIL import Image import os def process_images(): # 定义路径 folder_path rC:\Users\jg2yXRZ\OneDrive\桌面\20260511豆包重叠去水印 subfolder_path os.path.join(folder_path, 00图片) # 获取00图片文件夹中的所有图片文件 image_extensions [.jpg, .jpeg, .png, .bmp, .tiff] images [] for file in os.listdir(subfolder_path): if any(file.lower().endswith(ext) for ext in image_extensions): images.append(os.path.join(subfolder_path, file)) # 确保图片数量是双数 if len(images) % 2 ! 0: print(f警告图片数量为{len(images)}不是双数) return if len(images) 2: print(图片数量不足2张) return # 读取第一张图片 first_img_path images[0] first_img Image.open(first_img_path) print(f第一张图片: {first_img_path}) print(f第一张图片尺寸: {first_img.size}) # 读取第二张图片 second_img_path images[1] second_img Image.open(second_img_path) print(f第二张图片: {second_img_path}) print(f第二张图片尺寸: {second_img.size}) # 获取第二张图片的尺寸 second_width, second_height second_img.size # 定义要裁剪的区域从(100,100)到图片的宽度和高度 # 确保裁剪区域在图片范围内 crop_x1 min(200, second_width) crop_y1 min(200, second_height) crop_x2 second_width crop_y2 second_height if crop_x1 crop_x2 or crop_y1 crop_y2: print(错误裁剪区域无效起始点超出了图片范围) return # 裁剪第二张图片的指定区域 cropped_region second_img.crop((crop_x1, crop_y1, crop_x2, crop_y2)) print(f裁剪区域尺寸: {cropped_region.size}) # 获取裁剪后区域的尺寸 crop_width, crop_height cropped_region.size # 确保裁剪区域尺寸不超过第一张图片 first_width, first_height first_img.size if crop_width first_width or crop_height first_height: print(f警告裁剪区域({crop_width}x{crop_height})大于第一张图片({first_width}x{first_height})) # 调整裁剪区域大小以适应第一张图片 cropped_region cropped_region.resize((min(crop_width, first_width), min(crop_height, first_height))) crop_width, crop_height cropped_region.size # 计算右下角对齐的位置 paste_x first_width - crop_width paste_y first_height - crop_height print(f粘贴位置: ({paste_x}, {paste_y})) # 将裁剪区域粘贴到第一张图片上 # 创建一个副本避免修改原图 result_img first_img.copy() result_img.paste(cropped_region, (paste_x, paste_y)) # 保存结果图片 output_path os.path.join(folder_path, 000.jpg) result_img.save(output_path, JPEG, quality95) print(f图片已保存到: {output_path}) # 显示结果信息 print(f\n处理完成) print(f原第一张图片尺寸: {first_width}x{first_height}) print(f从第二张图片裁剪: 从({crop_x1},{crop_y1})到({crop_x2},{crop_y2})) print(f粘贴后图片尺寸: {result_img.size}) if __name__ __main__: try: process_images() except Exception as e: print(f处理过程中出现错误: {e}) # 如果需要更详细的错误信息可以取消下面的注释 # import traceback # traceback.print_exc()虽然可以通过Python拼合做出无水印的豆包图片但是人工下载图片比较繁琐最好是爬虫下载两套图片。再进行拼图。生成图片爬虫下载这四张图片import os import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse import time from pathlib import Path def download_images_from_page(url, save_folderdownloaded_images): 下载网页上的所有图片 Args: url: 要爬取的网页地址 save_folder: 保存图片的文件夹名称 # 创建保存图片的文件夹 if not os.path.exists(save_folder): os.makedirs(save_folder) # 设置请求头模拟浏览器访问 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 } try: # 发送请求获取网页内容 print(f正在访问: {url}) response requests.get(url, headersheaders, timeout10) response.raise_for_status() # 检查请求是否成功 # 解析HTML soup BeautifulSoup(response.text, html.parser) # 查找所有img标签 img_tags soup.find_all(img) print(f找到 {len(img_tags)} 个图片标签) downloaded_count 0 for i, img in enumerate(img_tags): # 获取图片URL优先使用src如果没有则尝试data-src等 img_url img.get(src) or img.get(data-src) or img.get(data-original) if not img_url: continue # 拼接完整的URL if not img_url.startswith(http): img_url urljoin(url, img_url) # 获取图片文件名 parsed_url urlparse(img_url) img_name os.path.basename(parsed_url.path) # 如果没有扩展名尝试从Content-Type获取 if not img_name or . not in img_name: img_name fimage_{i1}.jpg # 确保文件名安全移除特殊字符 img_name .join(c for c in img_name if c.isalnum() or c in .-_) if not img_name: img_name fimage_{i1}.jpg # 完整的保存路径 save_path os.path.join(save_folder, img_name) try: # 下载图片 print(f正在下载: {img_url}) img_response requests.get(img_url, headersheaders, timeout10) img_response.raise_for_status() # 保存图片 with open(save_path, wb) as f: f.write(img_response.content) downloaded_count 1 print(f✓ 已保存: {img_name} (大小: {len(img_response.content)} bytes)) # 添加延迟避免请求过快 time.sleep(0.5) except Exception as e: print(f✗ 下载失败 {img_url}: {e}) print(f\n完成共下载 {downloaded_count} 张图片保存到 {save_folder} 文件夹) except Exception as e: print(f访问网页失败: {e}) def download_images_with_selenium(url, save_folderdownloaded_images): 使用Selenium处理动态加载的页面如果需要 需要先安装: pip install selenium 还需要下载对应的浏览器驱动 try: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC except ImportError: print(请先安装selenium: pip install selenium) return # 创建保存图片的文件夹 if not os.path.exists(save_folder): os.makedirs(save_folder) # 设置Chrome选项 options webdriver.ChromeOptions() options.add_argument(--headless) # 无头模式不显示浏览器窗口 options.add_argument(--disable-gpu) options.add_argument(--no-sandbox) driver webdriver.Chrome(optionsoptions) try: print(f正在访问: {url}) driver.get(url) # 等待页面加载完成 wait WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.TAG_NAME, img))) # 滚动页面触发懒加载的图片 driver.execute_script(window.scrollTo(0, document.body.scrollHeight);) time.sleep(2) # 获取所有图片元素 img_elements driver.find_elements(By.TAG_NAME, img) print(f找到 {len(img_elements)} 个图片元素) downloaded_count 0 for i, img in enumerate(img_elements): img_url img.get_attribute(src) or img.get_attribute(data-src) if not img_url or data:image in img_url: continue # 获取图片文件名 img_name fimage_{i1}.jpg save_path os.path.join(save_folder, img_name) try: print(f正在下载: {img_url}) response requests.get(img_url, timeout10) response.raise_for_status() with open(save_path, wb) as f: f.write(response.content) downloaded_count 1 print(f✓ 已保存: {img_name}) time.sleep(0.3) except Exception as e: print(f✗ 下载失败: {e}) print(f\n完成共下载 {downloaded_count} 张图片) finally: driver.quit() if __name__ __main__: # 要下载的网页地址你的CSDN编辑页面 # 注意CSDN编辑页面通常需要登录才能访问 target_url https://www.doubao.com/chat/38425461077570050?channelcnblogs print( * 50) print(图片批量下载工具) print( * 50) # 方式1使用简单的requests方法 print(\n方式1使用requests方法下载) download_images_from_page(target_url, csdn_images) # 方式2如果需要处理动态加载的内容使用selenium # print(\n方式2使用selenium方法下载) # download_images_with_selenium(target_url, csdn_images_selenium)如果我不想装插件就无法下载无水印感觉现在豆包收费后不可能再让我们用插件获取无水印图片爬虫爬不了动态网页的图片所以我还是不能批量下载图片只能手工拼合“少量图片”

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价