gravatar如何自动调整图像中的颜色?

Mik*_*H-R 7 gravatar imagemagick

我决定将我的gravatar改为循环.我在我的博客上用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
Run Code Online (Sandbox Code Playgroud)

辉煌,现在我们只是将其上传到gravatar,我将有一个漂亮的圆形裁剪图像,一切都将与世界很好.


正如你可能从这个问题中猜到的一切都不好:

黑暗的重力图像

好吧,我必须清楚搞砸了我的imagemagick并没有检查前后图像是否相同,重新打开彼此相邻的图像,并看到它们确实是相同的.我尝试再次上传到gravatar并注意到他们似乎在"裁剪"阶段之后处理图像,这是在文件上传之后(在裁剪混乱之前)在浏览器中的样子:

工作的gravatar图片

好吧,让我们做一些挖掘,其他人必须在此之前偶然发现,所以我环顾四周,在一个荒凉的论坛里,一个孤独的灵魂在哭泣.现在没有回应,但相关文字在这里:

似乎如果上传到Gravatar's cropper的照片或图片没有黑色,它会将最近的灰色自动调整为黑色并使整个图像变暗,包括将白色变成灰色.可以确认任何具有灰色背景或具有足够大比例的PNG图像都会发生这种情况,无论它是否具有255个白色,无论它是否具有alpha混合

所以好像我可以通过将在一个黑色像素解决这个问题,这听起来还不错,所以我尝试添加一个黑色像素,那么单一的黑色和一个白色像素,结果是:

该死的gravatar

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

  • 有没有人知道什么后处理gravatar做什么,所以我可以撤消它或通过预处理抵消它的影响?
  • 这个"功能"是在任何地方记录下来的,还是可以关闭,或者被解决?

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

编辑:

我尝试制作一个反转图像,看它是基于平均值还是极端值进行处理,而且也变暗,看起来它更可能是平均值:

反圆圈变暗

Mik*_*H-R 3

好吧,我有一个“对我有用”的解决方案,不幸的是它只是经验性的并且“足够好”(我很想检查实际发生的情况,但不幸的是没有更多的时间致力于被书呆子狙击)我将发布我所做的事情,我认为可能发生的事情以及我认为如果有人有足够的时间应该如何解决这个问题。

首先我所做的,我只是尝试以随机量对图像进行美白,最终得到的伽玛值约为 2

convert mike_gravatar_circle.png -gamma 2 mike_gravatar_circle_light_2.png
Run Code Online (Sandbox Code Playgroud)

这是图片经过 gravatar 处理之前和之后的样子:

处理前的头像图片 处理后的头像图片

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

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