万圣节人物写真生成器(PaddleHub实现)

本文介绍零成本DIY网红万圣节写真的方法:用PaddleHub的deeplabv3p_xception65_humanseg模型进行人物抠图并更换背景(需注意背景尺寸匹配),再通过ultra_light_fast_generic_face_detector_1mb_640模型检测脸部,添加经美图秀秀处理成透明的头饰,含具体操作步骤与效果展示。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

万圣节人物写真生成器(paddlehub实现) - 创想鸟

在万圣节来临之际,手把手教大家如何零成本DIY网红万圣节写真,绚丽多彩的丰富背景以及炫酷的万圣节贴图随你选择,还支持自定义上传万圣节素材,我们先来抢先看看效果~

原图:

万圣节人物写真生成器(PaddleHub实现) - 创想鸟        

变换后:

原图+头饰:

万圣节人物写真生成器(PaddleHub实现) - 创想鸟        

或者你会喜欢这一款

原图+切换背景+头饰:

万圣节人物写真生成器(PaddleHub实现) - 创想鸟        

踩坑贴士:

1.如果需要更换背景的话,最好找到接近原图尺寸的背景图,不然原图里面的人物会因为尺寸不同导致拉伸变丑!!

2.DIY头饰,首先我们要把头饰弄成透明的,不然不透明会把人物的脸给挡住

具体操作:在网上找喜欢的头饰照片,然后打开电脑端的美图秀秀,然后进行抠图,再把背景设成透明即可,然后再上传到这儿。

这里是教程:头饰变透明教程

倒包、设置必要环境

In [1]

!pip install paddlehub==1.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple!hub install deeplabv3p_xception65_humanseg==1.0.0

       

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simpleCollecting paddlehub==1.6.2  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6e/07/d4839d63853c01d2f9d040ff079e63e007c9e4084e74f447baf46b426811/paddlehub-1.6.2-py3-none-any.whl (207kB)     |████████████████████████████████| 215kB 4.2MB/s eta 0:00:01Requirement already satisfied: chardet==3.0.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (3.0.4)Requirement already satisfied: opencv-python in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (4.1.1.26)Requirement already satisfied: gunicorn>=19.10.0; sys_platform != "win32" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (20.0.4)Requirement already satisfied: flake8 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (3.8.2)Requirement already satisfied: pyyaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (5.1.2)Requirement already satisfied: yapf==0.26.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (0.26.0)Requirement already satisfied: six>=1.10.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (1.15.0)Requirement already satisfied: Pillow in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (7.1.2)Requirement already satisfied: pre-commit in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (1.21.0)Requirement already satisfied: flask>=1.1.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (1.1.1)Requirement already satisfied: cma==2.7.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (2.7.0)Requirement already satisfied: tensorboard>=1.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (2.1.0)Requirement already satisfied: nltk in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (3.4.5)Requirement already satisfied: tb-paddle in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (0.3.6)Requirement already satisfied: colorlog in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (4.1.0)Requirement already satisfied: protobuf>=3.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (3.14.0)Requirement already satisfied: pandas; python_version >= "3" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (1.1.5)Requirement already satisfied: sentencepiece in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (0.1.85)Requirement already satisfied: numpy; python_version >= "3" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (1.20.3)Requirement already satisfied: requests in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.2) (2.22.0)Requirement already satisfied: setuptools>=3.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from gunicorn>=19.10.0; sys_platform != "win32"->paddlehub==1.6.2) (56.2.0)Requirement already satisfied: importlib-metadata; python_version paddlehub==1.6.2) (0.23)Requirement already satisfied: pycodestyle=2.6.0a1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->paddlehub==1.6.2) (2.6.0)Requirement already satisfied: pyflakes=2.2.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->paddlehub==1.6.2) (2.2.0)Requirement already satisfied: mccabe=0.6.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flake8->paddlehub==1.6.2) (0.6.1)Requirement already satisfied: nodeenv>=0.11.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (1.3.4)Requirement already satisfied: virtualenv>=15.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (16.7.9)Requirement already satisfied: identify>=1.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (1.4.10)Requirement already satisfied: toml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (0.10.0)Requirement already satisfied: cfgv>=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (2.0.1)Requirement already satisfied: aspy.yaml in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pre-commit->paddlehub==1.6.2) (1.3.0)Requirement already satisfied: Werkzeug>=0.15 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.0->paddlehub==1.6.2) (0.16.0)Requirement already satisfied: Jinja2>=2.10.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.0->paddlehub==1.6.2) (2.10.1)Requirement already satisfied: click>=5.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.0->paddlehub==1.6.2) (7.0)Requirement already satisfied: itsdangerous>=0.24 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from flask>=1.1.0->paddlehub==1.6.2) (1.1.0)Requirement already satisfied: google-auth-oauthlib=0.4.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (0.4.1)Requirement already satisfied: absl-py>=0.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (0.8.1)Requirement already satisfied: markdown>=2.6.8 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (3.1.1)Requirement already satisfied: grpcio>=1.24.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (1.35.0)Requirement already satisfied: wheel>=0.26; python_version >= "3" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (0.36.2)Requirement already satisfied: google-auth=1.6.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tensorboard>=1.15->paddlehub==1.6.2) (1.10.0)Requirement already satisfied: moviepy in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from tb-paddle->paddlehub==1.6.2) (1.0.1)Requirement already satisfied: pytz>=2017.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pandas; python_version >= "3"->paddlehub==1.6.2) (2019.3)Requirement already satisfied: python-dateutil>=2.7.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from pandas; python_version >= "3"->paddlehub==1.6.2) (2.8.0)Requirement already satisfied: idna=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->paddlehub==1.6.2) (2.8)Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->paddlehub==1.6.2) (2019.9.11)Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests->paddlehub==1.6.2) (1.25.6)Requirement already satisfied: zipp>=0.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from importlib-metadata; python_version flake8->paddlehub==1.6.2) (0.6.0)Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from Jinja2>=2.10.1->flask>=1.1.0->paddlehub==1.6.2) (1.1.1)Requirement already satisfied: requests-oauthlib>=0.7.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from google-auth-oauthlib=0.4.1->tensorboard>=1.15->paddlehub==1.6.2) (1.3.0)Requirement already satisfied: rsa=3.1.4 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from google-auth=1.6.3->tensorboard>=1.15->paddlehub==1.6.2) (4.0)Requirement already satisfied: cachetools=2.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from google-auth=1.6.3->tensorboard>=1.15->paddlehub==1.6.2) (4.0.0)Requirement already satisfied: pyasn1-modules>=0.2.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from google-auth=1.6.3->tensorboard>=1.15->paddlehub==1.6.2) (0.2.7)Requirement already satisfied: decorator=4.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from moviepy->tb-paddle->paddlehub==1.6.2) (4.4.2)Requirement already satisfied: proglogtb-paddle->paddlehub==1.6.2) (0.1.9)Requirement already satisfied: tqdm=4.11.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from moviepy->tb-paddle->paddlehub==1.6.2) (4.36.1)Requirement already satisfied: imageio-ffmpeg>=0.2.0; python_version >= "3.4" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from moviepy->tb-paddle->paddlehub==1.6.2) (0.3.0)Requirement already satisfied: imageio=2.5; python_version >= "3.4" in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from moviepy->tb-paddle->paddlehub==1.6.2) (2.6.1)Requirement already satisfied: more-itertools in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from zipp>=0.5->importlib-metadata; python_version flake8->paddlehub==1.6.2) (7.2.0)Requirement already satisfied: oauthlib>=3.0.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib=0.4.1->tensorboard>=1.15->paddlehub==1.6.2) (3.1.0)Requirement already satisfied: pyasn1>=0.1.3 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from rsa=3.1.4->google-auth=1.6.3->tensorboard>=1.15->paddlehub==1.6.2) (0.4.8)Installing collected packages: paddlehub  Found existing installation: paddlehub 2.0.4    Uninstalling paddlehub-2.0.4:      Successfully uninstalled paddlehub-2.0.4Successfully installed paddlehub-1.6.2/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/decorators.py:68: DeprecationWarning: `formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directly  regargs, varargs, varkwargs, defaults, formatvalue=lambda value: ""/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/lm/counter.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sequence, defaultdict/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/cma/utilities/utils.py:8: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import MutableMapping  # since Python 2.4?/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Iterable, Mapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import SizedDownloading deeplabv3p_xception65_humanseg[==================================================] 100.00%Uncompress /home/aistudio/.paddlehub/tmp/tmpxrc3h3w7/deeplabv3p_xception65_humanseg[==================================================] 100.00%Successfully installed deeplabv3p_xception65_humanseg-1.0.0

       In [3]

import osos.environ["CUDA_VISIBLE_DEVICES"]="0"

   

友情提示:首先大家喜欢哪种风格照片,就执行对应的步骤就可以了。

如果只需要添加头饰就可以跳转到 “步骤二、添加头饰” 即可;如果需要更换背景图片以及加头饰则从这里开始执行。

路线1:原图+头饰

路线2:原图+切换背景+头饰

刚开始是想着先加头饰再切换背景,但是执行切换背景抠图的时候会把原来加的头饰给去掉了(因为只扣人体的轮廓),因此路线2要先更换背景再加头饰

一、切换背景

1、导入相关的库

In [5]

import paddlehub as hubimport matplotlib.pyplot as plt import matplotlib.image as mpimg import cv2from PIL import Imageimport numpy as npimport math

       

/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/decorators.py:68: DeprecationWarning: `formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directly  regargs, varargs, varkwargs, defaults, formatvalue=lambda value: ""/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/lm/counter.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sequence, defaultdict/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import MutableMapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Iterable, Mapping/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  from collections import Sized

       

2、人物抠图

In [6]

# 显示处理之后的图片import paddlepaddle.enable_static()humanseg = hub.Module(name="deeplabv3p_xception65_humanseg")path = ["picture/people.jpg"]results = humanseg.segmentation(data={"image":path})# 预测结果展示test_img_path = results[0]["processed"]img = mpimg.imread(test_img_path)# 展示预测结果图片plt.figure(figsize=(10,10))plt.imshow(img) plt.axis('off') plt.show()

       

[2021-10-27 17:01:08,990] [    INFO] - Installing deeplabv3p_xception65_humanseg module[2021-10-27 17:01:09,108] [    INFO] - Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg[2021-10-27 17:01:09,917] [    INFO] - 0 pretrained paramaters loaded by PaddleHub/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  if isinstance(obj, collections.Iterator):/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working  return list(data) if isinstance(data, collections.MappingView) else data

       

               

3、合成背景

In [7]

base_image = Image.open(f'work/wsj.jpg').convert('RGB')fore_image = Image.open(f'humanseg_output/people.png').resize(base_image.size)# 图片加权合成scope_map = np.array(fore_image)[:,:,-1] / 255scope_map = scope_map[:,:,np.newaxis]scope_map = np.repeat(scope_map, repeats=3, axis=2)res_image = np.multiply(scope_map, np.array(fore_image)[:,:,:3]) + np.multiply((1-scope_map), np.array(base_image))#保存图片res_image = Image.fromarray(np.uint8(res_image))res_image.save(f"humanseg_output/1.png")print('照片合成完毕')plt.figure(figsize=(10,10))plt.imshow(res_image) plt.axis('off') plt.show()

       

照片合成完毕

       

               

二、添加头饰

1、导入相关的包

In [8]

import numpy as npimport matplotlib.image as mpimgimport matplotlib.pyplot as pltimport osfrom PIL import Imageimport paddlehub as hubimport cv2import shutil

   

2、展示需要人物图片

In [9]

test_img_path = ["humanseg_output/1.png"]#需要戴头饰的人物照片import matplotlib.pyplot as plt import matplotlib.image as mpimg img = mpimg.imread(test_img_path[0]) # 展示待预测图片plt.figure(figsize=(10,10))plt.imshow(img) plt.axis('off') plt.show()

       

               

3、脸部检测

In [10]

import paddlehub as hubmodule = hub.Module(name="ultra_light_fast_generic_face_detector_1mb_640")input_dict = {"image": test_img_path}# execute predict and print the resultresults = module.face_detection(data=input_dict, visualization=True)for result in results:    print(result)

       

[2021-10-27 17:01:41,620] [    INFO] - Installing ultra_light_fast_generic_face_detector_1mb_640 module

       

Downloading ultra_light_fast_generic_face_detector_1mb_640[==================================================] 100.00%Uncompress /home/aistudio/.paddlehub/tmp/tmpxx90yrr9/ultra_light_fast_generic_face_detector_1mb_640[==================================================] 100.00%

       

[2021-10-27 17:01:42,188] [    INFO] - Successfully installed ultra_light_fast_generic_face_detector_1mb_640-1.1.2

       

{'data': [{'left': 588.3775024414062, 'right': 673.67138671875, 'top': 520.2343139648438, 'bottom': 640.1370239257812, 'confidence': 0.9997701048851013}], 'path': 'humanseg_output/1.png', 'save_path': 'face_detector_640_predict_output/1.png'}

       

4、合成带头饰图片

In [11]

if os.path.exists('./HeCheng'):    pass      else:    os.mkdir('./HeCheng')#创建文件夹test_path='humanseg_output/1.png'#需要合成人物的图片toushi='work/wsj_maozi.png'#头饰照片savepath='HeCheng'#保存合成后图片文件夹x = results[0]if x.get('data'):     for result in results:        print(result)    # box 为头像在图片中的位置    # box(x1, y1, x2, y2)    # x1,y1 为头像左上角的位置    # x2,y2 为头像右下角的位置    x1 = results[0]['data'][0]['left']    y1 = results[0]['data'][0]['top']    x2 = results[0]['data'][0]['right']    y2 = results[0]['data'][0]['bottom']    # 头饰图片尺寸    fruit_size = (538, 310)    #偏移量    addx = -230 #这个可以根据实际情况调节    addy = -120 #这个可以根据实际情况调节    box = (int(x1)+addx,int(y1)+addy,int(x1)+fruit_size[0]+addx,int(y1)+ fruit_size[1]+addy)    #print(x1)    pil_im1 = Image.open(test_path)    pil_im2 = Image.open(toushi).convert('RGBA')    region = pil_im1.crop(box)#cut from the picture    region = region.transpose(Image.ROTATE_270)#rotate the image    pil_im1.paste(pil_im2, box, pil_im2)    plt.imshow(pil_im1)    pil_im1.save(savepath+'/'+'1.jpg')#合成后的图片else:    print("没有检测到")

       

{'data': [{'left': 588.3775024414062, 'right': 673.67138671875, 'top': 520.2343139648438, 'bottom': 640.1370239257812, 'confidence': 0.9997701048851013}], 'path': 'humanseg_output/1.png', 'save_path': 'face_detector_640_predict_output/1.png'}

       

               

以上就是万圣节人物写真生成器(PaddleHub实现)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/46984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 21:16:34
下一篇 2025年11月7日 21:20:40

相关推荐

  • Uniapp 中如何不拉伸不裁剪地展示图片?

    灵活展示图片:如何不拉伸不裁剪 在界面设计中,常常需要以原尺寸展示用户上传的图片。本文将介绍一种在 uniapp 框架中实现该功能的简单方法。 对于不同尺寸的图片,可以采用以下处理方式: 极端宽高比:撑满屏幕宽度或高度,再等比缩放居中。非极端宽高比:居中显示,若能撑满则撑满。 然而,如果需要不拉伸不…

    2025年12月24日
    400
  • 如何让小说网站控制台显示乱码,同时网页内容正常显示?

    如何在不影响用户界面的情况下实现控制台乱码? 当在小说网站上下载小说时,大家可能会遇到一个问题:网站上的文本在网页内正常显示,但是在控制台中却是乱码。如何实现此类操作,从而在不影响用户界面(UI)的情况下保持控制台乱码呢? 答案在于使用自定义字体。网站可以通过在服务器端配置自定义字体,并通过在客户端…

    2025年12月24日
    800
  • 如何在地图上轻松创建气泡信息框?

    地图上气泡信息框的巧妙生成 地图上气泡信息框是一种常用的交互功能,它简便易用,能够为用户提供额外信息。本文将探讨如何借助地图库的功能轻松创建这一功能。 利用地图库的原生功能 大多数地图库,如高德地图,都提供了现成的信息窗体和右键菜单功能。这些功能可以通过以下途径实现: 高德地图 JS API 参考文…

    2025年12月24日
    400
  • 如何使用 scroll-behavior 属性实现元素scrollLeft变化时的平滑动画?

    如何实现元素scrollleft变化时的平滑动画效果? 在许多网页应用中,滚动容器的水平滚动条(scrollleft)需要频繁使用。为了让滚动动作更加自然,你希望给scrollleft的变化添加动画效果。 解决方案:scroll-behavior 属性 要实现scrollleft变化时的平滑动画效果…

    2025年12月24日
    000
  • 如何为滚动元素添加平滑过渡,使滚动条滑动时更自然流畅?

    给滚动元素平滑过渡 如何在滚动条属性(scrollleft)发生改变时为元素添加平滑的过渡效果? 解决方案:scroll-behavior 属性 为滚动容器设置 scroll-behavior 属性可以实现平滑滚动。 html 代码: click the button to slide right!…

    2025年12月24日
    500
  • 如何选择元素个数不固定的指定类名子元素?

    灵活选择元素个数不固定的指定类名子元素 在网页布局中,有时需要选择特定类名的子元素,但这些元素的数量并不固定。例如,下面这段 html 代码中,activebar 和 item 元素的数量均不固定: *n *n 如果需要选择第一个 item元素,可以使用 css 选择器 :nth-child()。该…

    2025年12月24日
    200
  • 使用 SVG 如何实现自定义宽度、间距和半径的虚线边框?

    使用 svg 实现自定义虚线边框 如何实现一个具有自定义宽度、间距和半径的虚线边框是一个常见的前端开发问题。传统的解决方案通常涉及使用 border-image 引入切片图片,但是这种方法存在引入外部资源、性能低下的缺点。 为了避免上述问题,可以使用 svg(可缩放矢量图形)来创建纯代码实现。一种方…

    2025年12月24日
    100
  • 如何解决本地图片在使用 mask JS 库时出现的跨域错误?

    如何跨越localhost使用本地图片? 问题: 在本地使用mask js库时,引入本地图片会报跨域错误。 解决方案: 要解决此问题,需要使用本地服务器启动文件,以http或https协议访问图片,而不是使用file://协议。例如: python -m http.server 8000 然后,可以…

    2025年12月24日
    200
  • 如何让“元素跟随文本高度,而不是撑高父容器?

    如何让 元素跟随文本高度,而不是撑高父容器 在页面布局中,经常遇到父容器高度被子元素撑开的问题。在图例所示的案例中,父容器被较高的图片撑开,而文本的高度没有被考虑。本问答将提供纯css解决方案,让图片跟随文本高度,确保父容器的高度不会被图片影响。 解决方法 为了解决这个问题,需要将图片从文档流中脱离…

    2025年12月24日
    000
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 如何利用 CSS 选中激活标签并影响相邻元素的样式?

    如何利用 css 选中激活标签并影响相邻元素? 为了实现激活标签影响相邻元素的样式需求,可以通过 :has 选择器来实现。以下是如何具体操作: 对于激活标签相邻后的元素,可以在 css 中使用以下代码进行设置: li:has(+li.active) { border-radius: 0 0 10px…

    2025年12月24日
    100
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 为什么我的 Safari 自定义样式表在百度页面上失效了?

    为什么在 Safari 中自定义样式表未能正常工作? 在 Safari 的偏好设置中设置自定义样式表后,您对其进行测试却发现效果不同。在您自己的网页中,样式有效,而在百度页面中却失效。 造成这种情况的原因是,第一个访问的项目使用了文件协议,可以访问本地目录中的图片文件。而第二个访问的百度使用了 ht…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000
  • 使用CSS mask属性指定图片URL时,为什么浏览器无法加载图片?

    css mask属性未能加载图片的解决方法 使用css mask属性指定图片url时,如示例中所示: mask: url(“https://api.iconify.design/mdi:apple-icloud.svg”) center / contain no-repeat; 但是,在网络面板中却…

    2025年12月24日
    000
  • 如何用CSS Paint API为网页元素添加时尚的斑马线边框?

    为元素添加时尚的斑马线边框 在网页设计中,有时我们需要添加时尚的边框来提升元素的视觉效果。其中,斑马线边框是一种既醒目又别致的设计元素。 实现斜向斑马线边框 要实现斜向斑马线间隔圆环,我们可以使用css paint api。该api提供了强大的功能,可以让我们在元素上绘制复杂的图形。 立即学习“前端…

    2025年12月24日
    000
  • 图片如何不撑高父容器?

    如何让图片不撑高父容器? 当父容器包含不同高度的子元素时,父容器的高度通常会被最高元素撑开。如果你希望父容器的高度由文本内容撑开,避免图片对其产生影响,可以通过以下 css 解决方法: 绝对定位元素: .child-image { position: absolute; top: 0; left: …

    2025年12月24日
    000
  • 使用 Mask 导入本地图片时,如何解决跨域问题?

    跨域疑难:如何解决 mask 引入本地图片产生的跨域问题? 在使用 mask 导入本地图片时,你可能会遇到令人沮丧的跨域错误。为什么会出现跨域问题呢?让我们深入了解一下: mask 框架假设你以 http(s) 协议加载你的 html 文件,而当使用 file:// 协议打开本地文件时,就会产生跨域…

    2025年12月24日
    200
  • CSS 帮助

    我正在尝试将文本附加到棕色框的左侧。我不能。我不知道代码有什么问题。请帮助我。 css .hero { position: relative; bottom: 80px; display: flex; justify-content: left; align-items: start; color:…

    2025年12月24日 好文分享
    200
  • 前端代码辅助工具:如何选择最可靠的AI工具?

    前端代码辅助工具:可靠性探讨 对于前端工程师来说,在HTML、CSS和JavaScript开发中借助AI工具是司空见惯的事情。然而,并非所有工具都能提供同等的可靠性。 个性化需求 关于哪个AI工具最可靠,这个问题没有一刀切的答案。每个人的使用习惯和项目需求各不相同。以下是一些影响选择的重要因素: 立…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信