企图合并图片,一次性识别图片,结果悲催

1.批量提取图片

import requests
import re
from fontTools.ttLib import TTFont
from lxml import etree
from aip import AipOcr  #pip install baidu-aip
def readme(str,i):   #记事本,读取内容
    f=open(str,'r+')
    lines=f.readlines()
    lines[i]=lines[i].strip('\r\n')
    return lines[i]
for i in range(0,6):
#https://vip.gxrc.com/Public/Phone/4354E140-AF4E-4D46-B5C0-04AAD3A81F2F
#https://vip.gxrc.com/Public/Phone/113F1C6B-56E2-44DF-93A0-178E25ACC62E
#https://vip.gxrc.com/Public/Phone/FB4F6C7D-E4F9-442B-B8B8-603993782DAD
#https://vip.gxrc.com/Public/Phone/57EE4AF3-63D4-490A-A75C-98D4E5AFA5D8
#https://vip.gxrc.com/Public/Phone/266E2D9B-2ED9-4ED2-BE8A-565A8C91F5CD
#https://vip.gxrc.com/Public/Phone/6C73242B-DE0C-490B-A715-3DF7BCED7825
    r=requests.get(readme('k:/zhusc/src_url.txt',i))
    with open('k:/zhusc/ps/{}.png'.format(str(i)),'wb') as f:#一定要png,jpg无效
        f.write(r.content)

以下代码绝大部分来自【kimol君的无聊小发明】—用python写图片格式批量处理工具
https://blog.csdn.net/kimol_justdo/article/details/111239805?utm_source=app&app_version=4.5.0
2.批量裁剪图片

from PIL import Image
from pathlib import Path
import os
from shutil import copyfile

def resize(inImage, width, height, inplace=False):
    '''
    将图片调整为指定尺寸
    ----------------------------
    参数 inImage:需要处理的图片地址
    参数   width:预期图片宽度
    参数  height:预期图片高度
    参数 inplace:是否覆盖原文件
    ----------------------------
    返回 outImage:压缩后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0],inImage.split('.')[1])
    else:
        outImage = inImage
    image = Image.open(inImage)
    image = image.resize((width, height))
    image.save(outImage)
    print('"%s"调整成功!(尺寸:%dx%d)'%(inImage, width, height))
    return outImage

def get_size(fileName):
    '''
    获取图片文件的大小(KB)
    --------------------
    参数 fileName: 文件名
    --------------------
    返回 fileSize:文件的大小
    '''
    fileSize = os.path.getsize(fileName)
    fileSize /= 1024 # 将单位转为KB
    return fileSize

def compress(inImage, targetSize, step=5, quality=75, inplace=False):
    '''
    将图片压缩到指定的大小
    -------------------------------
    参数    inImage:需要处理的图片地址
    参数 targetSize:预期压缩的大小
    参数       step:每次迭代的压缩比
    参数    quality:初始压缩比
    参数    inplace:是否覆盖原文件
    -------------------------------
    返回 outImage:压缩后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0], inImage.split('.')[1])
    else:
        outImage = inImage
    fileSize = get_size(inImage)
    while fileSize > targetSize:
        image = Image.open(inImage)
        image.save('k:/zhusc/ps/temp.jpg', quality=quality)
        fileSize = get_size('k:/zhusc/ps/temp.jpg')
        quality -= step # 调整压缩比
        if quality < 0:
            print('"%s"压缩失败!(请调整step)'%inImage)
            return 
    if os.path.exists('k:/zhusc/ps/temp.jpg'):
        copyfile('k:/zhusc/ps/temp.jpg',outImage)
        os.remove('k:/zhusc/ps/temp.jpg') # 移处临时文件
    print('"%s"压缩成功!(大小:%.2fKB)'%(inImage, fileSize))
    return outImage

def adjust(inImage, width, height, targetSize, inplace=False):
    '''
    将图片调整为指定格式(包括尺寸及大小)
    -------------------------------
    参数    inImage:需要处理的图片地址
    参数      width:预期图片宽度
    参数     height:预期图片高度
    参数 targetSize:预期压缩的大小
    参数    inplace:是否覆盖原文件
    -------------------------------
    返回 outImage:调整后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0],inImage.split('.')[1])
    else:
        outImage = inImage
    resize(inImage, width, height, inplace=inplace)
    compress(outImage, targetSize, inplace=True)
    return outImage

def loop_reads_files(way):
    import os
    for root,dirs,files in os.walk(way):
        for name in files:
            f=(os.path.join(root, name))
            resize(f, 60, 20, inplace=True)

loop_reads_files('k:/zhusc/ps/')

3.合并图片
以下代码绝大部分来自Python将多张图片进行合并拼接
https://blog.csdn.net/ahaotata/article/details/84027000

import PIL.Image as Image
import os

IMAGES_PATH = 'K:\\zhusc\\ps\\'  # 图片集地址
IMAGES_FORMAT = ['.jpg', '.png']  # 图片格式
IMAGE_SIZE =597  # 每张小图片的大小
IMAGE_ROW = 3  # 图片间隔,也就是合并成一张图后,一共有几行
IMAGE_COLUMN = 2  # 图片间隔,也就是合并成一张图后,一共有几列
IMAGE_SAVE_PATH = 'K:\\zhusc\\ps\\final.jpg'  # 图片转换后的地址

# 获取图片集地址下的所有图片名称
image_names = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item]

# 简单的对于参数的设定和实际图片集的大小进行数量判断
if len(image_names) != IMAGE_ROW * IMAGE_COLUMN:
    raise ValueError("合成图片的参数和要求的数量不能匹配!")

# 定义图像拼接函数
def image_compose():
    to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) #创建一个新图
    # 循环遍历,把每张图片按顺序粘贴到对应位置上
    for y in range(1, IMAGE_ROW + 1):
        for x in range(1, IMAGE_COLUMN + 1):
            from_image = Image.open(IMAGES_PATH + image_names[IMAGE_COLUMN * (y - 1) + x - 1]).resize(
                (IMAGE_SIZE, IMAGE_SIZE),Image.ANTIALIAS)
            to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE))
    return to_image.save(IMAGE_SAVE_PATH) # 保存新图
image_compose() #调用函数

效果悲催啊
企图合并图片,一次性识别图片,结果悲催_第1张图片

你可能感兴趣的:(python,计算机视觉,爬虫)