当前位置: 首页 > article >正文

CSDN图片加载不出来问题解决

CSDN图片加载不出来问题解决

这个情况一般是由于在Typora中调整了图片缩放导致的

像这两张图我都在Typora中调整为了50%大小

Typora自动将它转换为使用HTML标签,而其中的style中的zoom属性无法被CSDN识别,因此图片无法加载

image-20250131123641181

解决方法有两种(前提:已经配置好图床)

1.最简单的方法 ->不缩放图片

这种方法固然有效,但是在CSDN中图片默认不会居中,而且全部都很大,不够美观

2.比较好的解决方法->使用python脚本转换

脚本代码往下翻

先说说这个脚本能够做什么

将图片缩放标签改为CSDN能够识别的形式
居中图片

用法也很简单:使用前需要配置Python环境,并且安装Python的PIL库

这些大家自行搜索教程,这里不再赘述

首先将我给的python文件放到 要转换的md文件 的同一目录下

image-20250131123858417

点击文件管理器左上角的框框,输入cmd后回车,打开命令行

image-20250131123925966

在cmd中输入一下内容并回车

python3 transform.py 你的md文件名.md

当看到以下内容时代表已经转换完成(图片比较多的话就耐心等待一下)

注意不要带有中文文件名

image-20250131123956111

此时目录中会出现一个带有CSDN前缀的md文件,使用此文件上传csdn即可

image-20250131124028920

Python脚本代码

这篇文章中的图片都是经过了这个脚本转换的

脚本采用了正则匹配来获取图片信息,学过python的同学应该比较熟悉了

import io
import re
import sys
import urllib.request
from PIL import Image

def get_size(img_path):  # 根据图片链接获取图片的大小
    response = urllib.request.urlopen(img_path)
    temp_img = io.BytesIO(response.read())
    img = Image.open(temp_img)
    return img.size

def alter(s):  # 处理未修改大小的图片
    return "![](" + s.group(2) + "#pic_center)"

def alter_zoom(s):  # 处理 typora 中用 zoom 属性修改过大小的图片
    zoom_value = int(s.group(4)) / 100
    w, h = get_size(s.group(2))
    new_w, new_h = int(zoom_value * w), int(zoom_value * h)
    return "![](" + s.group(2) + "#pic_center" + f' ={new_w}x{new_h})'
    #return s.group(1) + s.group(2) + "#pic_center" + s.group(3) + f'width="{s.group(4)}%"' + s.group(5) #注释掉的这种方法不保证100%可以

def alter_zoom_empty(s):  # 处理 typora 中用 zoom 属性修改过大小的图片
    return "![](" + s.group(2) + "#pic_center)"

file_name = sys.argv[1]
with open("./" + file_name, "r", encoding="utf-8") as fin, open("./" + 'CSDN_' + file_name , "w", encoding="utf-8") as fout:
    pattern = re.compile(r"(!\[image-\d+]\()(.+)(\))")  # 未修改大小的图片的匹配规则
    pattern_zoom = re.compile(r'(<img src=")(.*)(" .* )style="zoom:\s?(\d+)%;"(\s?/>)')  # 带有 zoom 属性的图片的匹配规则
    pattern_zoom_empty = re.compile(r'(<img src=")(.*)(" .* )style="zoom:();"(\s?/>)')  # 带有 zoom 属性的图片的匹配规则
    content = fin.read()  # 读取文件内容
    content1 = pattern.subn(alter, content)  # 第一次处理
    content2 = pattern_zoom.subn(alter_zoom, content1[0])  # 第二次处理
    content3 = pattern_zoom_empty.subn(alter_zoom_empty, content2[0])  # 第三次处理
    fout.write(content3[0])  # 写入新文件
    print("原始图片替换次数:", content1[1])
    print("zoom 属性图片替换次数:", content2[1] + content3[1])
    print("总共替换次数:", content1[1] + content2[1] + content3[1])


http://www.kler.cn/a/528323.html

相关文章:

  • 【回溯】目标和 字母大小全排列
  • 大白话讲清楚embedding原理
  • 攻防世界_simple_php
  • 缩位求和——蓝桥杯
  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL
  • AJAX笔记入门篇
  • webrtc peerconnection_client peerconnection_server 连接失败问题解决 win10 win11
  • 使用UpdateCursor删除行
  • 学习ArkTS语言
  • 开源2 + 1链动模式AI智能名片S2B2C商城小程序视角下从产品经营到会员经营的转型探究
  • react中useEffect的使用
  • 【数据结构】_C语言实现带头双向循环链表
  • 安装anaconda3 后 电脑如何单独运行python,python还需要独立安装吗?
  • BurpSuite抓包与HTTP基础
  • MySQL数据库 (三)- 函数/约束/多表查询/事务
  • pytorch实现门控循环单元 (GRU)
  • 《深入理解HTTP交互与数据监控:完整流程与优化实践》
  • FreeRTOS学习 --- 中断管理
  • 写好简历的三个关键认知
  • NVIDIA (英伟达)的 GPU 产品应用领域
  • Kafka 使用说明(kafka官方文档中文)
  • 30.Word:设计并制作新年贺卡以及标签【30】
  • 2025.1.31总结
  • Kafka SASL/PLAIN介绍
  • Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器
  • Python中的数据类(dataclass):简化类的定义与数据管理