很长的图,如何切割,并最终实现 A4 尺寸打印?

i

用 Picviewer CE+ PDF 扩展下载完是这样的,直接打印就行了

不过我刚刚发现,浏览器打开图片在未缩放模式下打印直接就是分页的 :joy:

为什么我不行…会挤在一张A4里

你是说我的 pdf 扩展吗?那是我刚才看见这个帖子现写的。最新版才行,之前不支持长图切割 :see_no_evil:

新标签页打开图片后,要点一下放大。

是不是只要安装pdf 扩展之后,所有的下载就变成了PDF?

Firefox 浏览器打开原图,放大到窗口全宽后打印——

分页是这样式儿的——

所以这个事情,用浏览器直接打印就行了…

看图软件打印有点多此一举了

不影响单图下载,批量下载从 zip 变成 pdf。然后命令菜单里 Picviewer CE+ PDF addon 底下可以即时切换。

我给一个方案,之前网上找的软件

能够做到按固定尺寸分割图片,并支持对图片分界线进行微调。

分割出来的图片文件直接拉进WORD,(我之前用一般分两栏排列)就可以打印了

免费图片分割软件|图片快速分割工具 V1.0 绿色版下载_当下软件园 (downxia.com)
顺便放了一个网盘
链接: https://pan.baidu.com/s/1GH1450b1gUdzDIdayhEecA?pwd=e7a3 提取码: e7a3 复制这段内容后打开百度网盘手机App,操作更方便哦

1 个赞

多走一步,更多可能。

一、将图片转为 PDF。

二、使用 PDF-XChange Viewer 的打印功能。

只想走一步的可以用 PDF-XChange Editor,但是收费的,而且一点都不小而美。

浏览器的分割打印只能用于截屏的长图,如果是大图(如:地图类)就不行了。而且这个软件还可以设置重叠部分。

对长图切割打印来说我觉得你这个是目前最好的方法, 稍微计算一下切割比例, 切好直接拖入faststone–>工具–>通过侧面加载图片就可以横拼图片了. 打印的效果很清晰


下面一段AI写的python代码, 用于将裁减好的图片以2栏或3栏形式横拼. 一些小问题来来回回问了好几遍都没能解决(拖拽图片导入), 还有一个问题是长度不同的图片会显示黑色背景问题, 一开始解决了, 修修改改给改没了,无法回滚到之前的状态, 直接复制ai的答案也没能解决.

2024/06/30 21:41:36更新:python脚本修改为直接读取固定文件夹内图片, 合并完成(保存到固定文件夹)即退出
PixPin_2024-06-30_21-42-15
python脚本:

import os
import tkinter as tk
from PIL import Image, ImageTk
from tkinter import messagebox

class ImageMergerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Image Merger")

        self.image_paths = []
        self.selected_layout = tk.StringVar()
        self.selected_layout.set("2 Column") 

        self.create_widgets()
        self.load_images_from_folder("C:/Users/Administrator/Desktop/图片分割")  

    def create_widgets(self):
        self.layout_label = tk.Label(self.root, text="Select Layout:")
        self.layout_label.pack(pady=5)

        layout_options = ["2 Column", "3 Column"]
        self.layout_menu = tk.OptionMenu(self.root, self.selected_layout, *layout_options)
        self.layout_menu.pack(pady=5)

        self.merge_button = tk.Button(self.root, text="Merge Images", command=self.merge_images)
        self.merge_button.pack(pady=10)

        self.image_frame = tk.Frame(self.root)
        self.image_frame.pack(pady=10)

        self.canvas = tk.Canvas(self.image_frame)
        self.scrollbar = tk.Scrollbar(self.image_frame, orient="vertical", command=self.canvas.yview)
        self.scrollbar.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)
        self.canvas.configure(yscrollcommand=self.scrollbar.set)

        self.image_frame_inner = tk.Frame(self.canvas)
        self.canvas.create_window((0, 0), window=self.image_frame_inner, anchor="nw")

        self.root.geometry("200x450") 

    def load_images_from_folder(self, folder_path):
        self.image_paths.clear() 

        try:
            image_files = [(os.path.join(folder_path, filename), os.path.getmtime(os.path.join(folder_path, filename)))
                           for filename in os.listdir(folder_path)
                           if filename.lower().endswith(('.png', '.jpg', '.jpeg'))]

            image_files.sort(key=lambda x: x[1])

            self.image_paths = [file[0] for file in image_files]

            self.update_image_preview()

        except OSError as e:
            tk.messagebox.showerror("Error", f"Failed to open folder: {str(e)}")

    def update_image_preview(self):
        for widget in self.image_frame_inner.winfo_children():
            widget.destroy()

        for i, img_path in enumerate(self.image_paths):
            img = Image.open(img_path)
            img.thumbnail((150, 150))
            img = ImageTk.PhotoImage(img)

            label = tk.Label(self.image_frame_inner, image=img, bg="black")
            label.image = img
            label.grid(row=i // 2, column=i % 2, padx=5, pady=5)

        self.image_frame_inner.update_idletasks()
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))


    def merge_images(self):
        layout = self.selected_layout.get()
        if layout == "2 Column":
            columns = 2
        elif layout == "3 Column":
            columns = 3
        else:
            messagebox.showerror("Error", "Invalid layout selected")
            return

        merged_images = []
        for i in range(0, len(self.image_paths), columns):
            images = [Image.open(img_path) for img_path in self.image_paths[i:i + columns]]
            widths, heights = zip(*(img.size for img in images))
            max_height = max(heights)
            total_width = sum(widths)

            new_image = Image.new("RGB", (total_width, max_height), color="white")
            x_offset = 0
            for img in images:
                new_image.paste(img, (x_offset, 0))
                x_offset += img.width

            merged_images.append(new_image)

        save_path = r"C:\Users\Administrator\Desktop\merged\\" 
        if not os.path.exists(save_path):
            os.makedirs(save_path)

        for idx, img in enumerate(merged_images):
            img.save(f"{save_path}merged_{idx + 1}.png")

      #  messagebox.showinfo("Success", f"{len(merged_images)} images merged successfully!")
        self.root.quit()
        self.root.destroy()

if __name__ == "__main__":
    root = tk.Tk()
    app = ImageMergerApp(root)
    root.mainloop()

下面ahk脚本用于计算图片分割的高度, 计算完打开图片切割工具, 尽可能将信息填入gui.
PixPin_2024-06-30_21-47-59

ahk脚本:



#NoEnv
#Warn

Gui, Add, Edit, x5 y5 vWidth w50, 图宽
Gui, Add, Text, y5, *
Gui, Add, Edit, y5 w70 vHeight, 图高

Gui, Add, Button, y5 Default , 栏宽70
Gui, Add, Button, y5 , 栏宽105

Gui, Show, h100, 分割图片高度
return

Button栏宽70:
    Gui, Submit
    Result := Floor(Height / (Height / (Width / 70) / 297))
    goto, openpicsplit

Button栏宽105:
    Gui, Submit
    Result := Floor(Height / (Height / (Width / 105) / 297))
    goto, openpicsplit



openpicsplit:
    Run, "D:\备份\大图快速分割工具.exe"
    Sleep 2500
    Send, {Tab 6}
    Sleep 500
    Send, %Width%
    Sleep 500
    Send, {Tab}
    Sleep 500
    Send, %Result%
    Send, {Tab}
    Send, {text}C:\Users\Administrator\Desktop\图片分割
    Sleep 1000
    Send, {Tab}
    Send, 0
    Sleep 500
    Send, {Tab}
    Send, 0
ExitApp

GuiClose:
    ExitApp

其实2栏不用这么麻烦,直接把分割好的文件拉进word或者wps,调成2栏,调整一下页边距什么的就行了,。

分栏的话也可以用浏览器打印大法啊,Pages pre sheet 调整成 2 或者 4 就可以了

有个软件,作者说目前免费。影谷长图打印。

有些看图软件也可以设置的吧

其实『画图』也可以的,点打印,然后在设置里写1页宽,10页长(可以多写,实际打印完就不会再出纸了,但是不用写少了)

下面是借用已有工具, 用脚本连接的方式:
1. 运行"图片切割拼接.ahk"
2. 选定图片文件
3. 按Ctrl Shift 2或 Ctrl Shift 3
4. 手动微调切割位置-完成后点切割
简化操作流程:

星际网盘

我也是你这样想的,直接切割打印太浪费了,如果能设置切割为几份,一张A4纸可以打印好几个长图的,这样感觉是最合适的,因为字也可以看清楚,这样直接切割,只能放大打印,太浪费了。

如果横向不分割,只分割纵向,很长的图,如何切割,并最终实现 A4 尺寸打印? - #16,来自 xiaokonglong 是最方便的。