image-processing - 使用图像魔法从图像中删除背景(任何颜色)
问题描述
嗨,我参考这个问题问这个问题在 ImageMagic php 中模糊洪水填充 - 制作透明图像
#!/bin/bash
# Get size of original
sz=$(convert -format "%wx%h" phone.png info:)
# Floodfill background area with transparency
convert phone.png -fuzz 5% -fill none -draw 'color 0,0 floodfill' ObjectOnTransparent.png
# Extract alpha channel
convert ObjectOnTransparent.png -alpha extract Alpha.png
# Extract edges of alpha channel - experiment with thickness
convert Alpha.png -edge 1 AlphaEdges.png
# Get difference from background for all pixels
convert phone.png \( +clone -fill white -colorize 100% \) -compose difference -composite Diff.png
# Multiply edges with difference, so only edge pixels will have a chance of getting through to final mask
convert AlphaEdges.png Diff.png -compose multiply -composite EdgexDiff.png
# Extend Alpha by differences at edges
convert Alpha.png EdgexDiff.png -compose add -composite ReEdgedAlpha.png
# Apply new alpha to original image
convert phone.png \( ReEdgedAlpha.png -colorspace gray \) -compose copyopacity -composite RemaskedPhone.png
# Splat RemaskedPhone over red background
convert -size $sz xc:red RemaskedPhone.png -composite Result.png
我运行了这些脚本,它在白色背景的图像上运行准确,并且产生了干净的边缘,但我想问一下是否有任何方法可以从图像中删除任何颜色背景,例如 https://ibb。 co/BNWnNBs 我想从中删除图像角落的黑色,例如https://ibb.co/x7nD8Vb。
任何帮助表示感谢
解决方案
这适用于我在 Unix 语法的 ImageMagick 6 中。
输入:
convert eagle.png -alpha off -fuzz 10% -fill none -draw "matte 0,0 floodfill" \
\( +clone -alpha extract -blur 0x2 -level 50x100% \) \
-alpha off -compose copy_opacity -composite \
eagle_transp.png
结果:
Windows 语法为:
转换 eagle.png -alpha off -fuzz 10% -fill none -draw "matte 0,0 floodfill" ^ ( +clone -alpha extract -blur 0x2 -level 50x100% ) ^ -alpha off -compose copy_opacity -composite ^ eagle_transp. PNG
如果在 .bat 脚本中,将 % 加倍为 %%
推荐阅读
- javascript - 如何更改子节点 css?
- javascript - 如何排序取决于 JS 中对象的 '001'、'002' 之类的 'key'
- parsing - 在 Teradata 中解析具有可变格式的维度字段?
- postgresql - 如何在 pl/pgsql 的一个循环中创建多个类型?
- javascript - ¿ 是否有与 SVG 一起使用的球形几何 XML 命名空间……?
- mysql - 从被劫持的域名转移 wordpress
- xcode8 - 3D 对象在移动相机时悬停
- google-cloud-platform - 无法创建 Windows 虚拟机
- api - 如何使用从 API 获取的数据显示来自 VueX 的对象
- java - 在 JUnit 中测试没有睡眠的潜在死锁