【问题标题】:How does gravatar adjust the colour in your images automatically?Gravatar 如何自动调整图像中的颜色?
【发布时间】:2014-06-09 23:38:50
【问题描述】:

我决定将我的头像更改为圆形。我在我的博客上使用 css 将它循环,并且更喜欢这种效果,因此决定使用一些 imagemagick 为我的图像提供一个圆形的 alpha 通道(这样我也可以在 SO 上使用它,等等)。几个快速命令后我被排序:

# crop to square 422x422 with 0x0 offset
convert mike_gravatar.jpeg -crop 422x422+0+0 mike_gravatar_square.jpeg
# give circular alpha channel around it NOTE this is for a 422x422 image (note the 211x211)
convert mike_gravatar_square.jpeg \( +clone -threshold -1 -negate -fill white -draw "circle 211,211,211,0" \) -alpha off -compose copy_opacity -composite mike_gravatar_circle.png

太棒了,现在我们把它上传到 gravatar,我将有一个漂亮的圆形裁剪图像,一切都会很好。


正如您可能从问题中猜到的那样,一切都不好:

好吧,我一定是我的 imagemagick 搞砸了,没有检查前后图像是否相同,重新打开一个并排的图像,看看它们确实是相同的。我尝试再次上传到 gravatar 并注意到它们似乎在“裁剪”阶段之后处理图像,这是文件上传后在浏览器中的样子(在裁剪弄乱之前):

好吧,让我们做一些挖掘,其他人之前一定偶然发现过这个,所以我环顾四周并one lone soul in a desolate forum wasteland cries out。现在对此没有任何回应,但是相关的文字在这里:

似乎如果将照片或图片上传到 Gravatar 的裁剪器 没有深黑色,它会自动将最接近的灰色调平为黑色 并使整个图像变暗,包括将白色变暗为灰色。能 确认任何具有灰色背景的 PNG 图像都会出现这种情况 或者有足够大的比例,不管它有没有 255 白人,不管它是否有阿尔法混合

看来我可以通过添加一个黑色像素来解决这个问题,这听起来不错,所以我尝试添加一个黑色像素,然后添加一个黑色和一个白色像素,结果:

所以基本上现在我没有想法了:

  • 有谁知道 gravatar 的后处理功能是什么,所以我可以撤消它或通过预处理来抵消它的影响?
  • 此“功能”是否记录在任何地方,或者可以关闭或绕过?

我认为预处理图像以抵消他们对其所做的变暗会很酷,但这需要确切地知道他们做了什么才能改变事物,显然这可能是不可能的(取决于每种颜色,我想)

编辑:

我尝试制作一个反转图像,看看它是基于平均值还是极值进行处理并且也变暗了,似乎它更有可能是平均值:

【问题讨论】:

    标签: imagemagick gravatar


    【解决方案1】:

    好的,我有一个“对我有用”的解决方案,不幸的是它只是经验性的并且“足够好”(我很想检查实际发生的情况,但不幸的是没有更多时间投入是nerd sniped) 我将发布我所做的事情、我认为可能发生的事情以及我认为如果有人有足够的时间应该如何解决这个应该。

    首先我做了什么,我只是尝试通过随机数量对图像进行白化,最终工作的是 2 左右的伽马

    convert mike_gravatar_circle.png -gamma 2 mike_gravatar_circle_light_2.png
    

    以下是 gravatar 处理前后的图片:

    我觉得我需要像我在左边那样破坏我的照片以使其看起来正常,这很荒谬,所以我将留下这个问题,看看是否有人可以向我展示更好/更清洁的做事方式这个。

    编辑:忘记提及我的(完全没有根据的)关于如何解决这个问题的猜测。所以我的猜测是,gravatar 可能会尝试使图像的平均颜色成为某种类型的中间值(因为这可能看起来很合理......我猜,我不知道)并将 alpha 拾取为全白。尝试一些实验来确定可能很有趣,但前提是他们有一个 api 来自动上传和下载图像,否则这将是痛苦的努力,我期待任何关于人们认为正在发生的事情的建议。

    【讨论】:

    • 这看起来像是 ImageMagick 的问题。最近,它开始假设灰度图像处于线性色彩空间而不是 sRGB 色彩空间(即 gamma 偏离了 2.2 倍)。您使用的是哪个版本的 ImageMagick(转换)?只需输入“convert”并查看输出的第一行即可找到答案。
    • @GlennRanders-Pehrson 我有6.8.9-1 Q16 x86_64,但问题是我上传了左侧的图像,以便让 gravatar 显示右侧的图像。恐怕我不完全理解你所说的关于 imagemagick 的内容,你能澄清一下吗?您是说在处理图像以进行裁剪时,gravatar 认为图像使用线性色阶,因此不仅对其进行裁剪,还对其应用了 2.2 的伽马转换?这不会使图像变亮而不是像它那样变暗吗?我确定我误解了,但听起来你可能走在正确的轨道上......
    • 为了防止“转换”改变色彩空间,添加一个选项来告诉 ImageMagick 你的图像已经在“sRGB”色彩空间或已经是“RGB”(线性),无论是哪种情况,例如, "convert -set colorspace mike_gravatar.jpeg -crop 422x422+0+0 mike_gravatar_square.jpeg" 并将"-set colorspace sRGB" 添加到第二个"convert" 命令的开头。拥有您开始使用的实际“mike_gravatar.jpeg”图像的副本会很有用。
    • 嗯,不幸的是,在转换后立即在每个命令的开头添加-set colorspace sRGB 似乎没有帮助,我误解了我应该做什么吗?。
    • 另外,如果你想要一张 gravatar 会变暗的图片,你可以使用here,因为它也会被 gravatar 变暗(这意味着它们的操作甚至不是幂等的!)
    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多