从 API 的素质可以看出公司的气质

2017-11-21 23:49:06 +08:00
 quietjosen

今天在改进 iText 上传前压缩大图的功能。其中,百度、腾讯、Google 等各家 OCR 服务对上传的图片尺寸都有要求、也都要求对图片进行 base64 压缩。可这要求跟要求可就不同了。

为什么实际大小与宣称大小不一致呢?

既然 base64 会带来计算上的麻烦,为什么不直接使用解压后的图片大小呢?没错,Google 就是这么干的。你无需考虑 base64 带来的尺寸增加,也无需考虑一个字符串到底占几个字节,只要原图是 4 MB 以下即可

从这一点上看,服务接口的素质(公司的节操)顺序为:

Google > 腾讯 > 百度

12459 次点击
所在节点    程序员
70 条回复
schema
2017-11-22 15:59:12 +08:00
标题日常哗众取宠
st2udio
2017-11-22 16:36:37 +08:00
原始图片的 base64 编码数据(解码后大小上限 1MB,支持 JPG、PNG、BMP 格式)

base64 编码后大小不超过 4M,最短边至少 15px,最长边最大 4096px

有不对的宣传吗?不懂。。 [为什么实际大小与宣称大小不一致呢?]

还只是为了推广你的软件,所以要
so898
2017-11-22 17:00:40 +08:00
腾讯那个确实有点难找,百度这个可是重复声明了 14 遍啊~~~~~~
估计楼主的母语是英语吧,看英文仔细程度大于看中文仔细程度
yuriko
2017-11-22 17:04:10 +08:00
当喷国内公司变成政治正确的时候,不懂瞎说的也有底气了……
MushishiXian
2017-11-22 17:26:45 +08:00
v2 太可怕了...
Charkey
2017-11-22 17:30:03 +08:00
so 世界好可怕,到处 pen
quietjosen
2017-11-22 17:39:48 +08:00
@xiao17174 在这些回复中,你的最有技术含量。

不过,事实上,如果发送 3MB 个字符(按你所说是 ASCII 编码)的 base64 编码的图片给百度,百度是会报错的,说图片尺寸不对。我也只能推测 http 请求是按 utf8 传送、每个字符占 2 位,所以要 /2 ;不然,我是没办法和事实对应。
xiao17174
2017-11-22 18:12:30 +08:00
@quietjosen utf-8 是一种编码规范,实际上它是可变长的,并不是所谓的每个字符占 2 字节(不是位).而且正如楼上某位说的,utf8 是兼容 ascii 的,也就是说针对'a''A'这种,utf8 也规定只占用一个字节.可能我说这些你会听得一头雾水.
如果有空可以自己了解一下.

至于你说的猜测,我也有几个猜测.
1.你以为的 3MB 个字符其实并不是真的 3MB,实际的字节数已经超过 4MB,你可以看下你的 context-length 上标识的是多少.
2.如返回值所说,你传的图片的尺寸真的超出 15px*4096px 限制.
3.你传的数据在某个过程中被截断了.可能是你这边,也可能是在服务器那边,错误的数据导致了百度解析图片出错,而服务端的返回值延用了尺寸不对的错误码.本质上是数据解析(读取图片)出错.
xiao17174
2017-11-22 18:13:58 +08:00
我为什么这么空....伤脑筋啊...
quietjosen
2017-11-22 18:53:55 +08:00
@xiao17174 谢谢回复。

1. 对,我说的是 3MB 个字符;如果确实是用 UTF8 编码、英文字符占 1 个字节,那按道理应该是 3MByte 了。
2. 图片没有超出尺寸限制
3. 应该不是,因为如果解析出错,返回的错误是不同的。

有时间,我测试下连续的尺寸,比如 2.01MB/2.02MB/…/3.00MB,看哪个尺寸开始不行。

问题就在于:为什么要让每个接入服务的开发者,花这么无谓的时间、做这种无谓的试错?看看人家 Google,只要原图 OK 就行。
xy90321
2017-11-22 19:34:01 +08:00
@quietjosen 如果照着 API 文档开发也能算试错的话,我建议你自己去发明所有轮子这样就不存在试错了

别人 API 文档里写的那么清楚了,哪里存在试的过程了。。。

要吐槽 API 不够人性化那就请明明白白吐槽 API 不够人性化

非要整点素质啊气质啊什么的,上升到百度腾讯就是渣渣,看我大谷歌秒杀全场

再加上顶楼里那简直可以称为之污蔑诽谤与事实完全不符的描述

这就是所谓的带节奏失败反过来装人畜无害吗?
sicongwang
2017-11-22 21:02:11 +08:00
为黑而黑, 已 block
leonzoe
2017-11-22 23:25:01 +08:00
只能说同情楼主了.楼上一群人既没试过,也没给个公式算一下,这就开始喷了,斯阔以.
inoris
2017-11-23 00:06:27 +08:00
同情楼主。
binux
2017-11-23 01:29:46 +08:00
@skadi #30 这就是我喜欢上 v2 的原因啊
Technetiumer
2017-11-23 01:38:42 +08:00
這說明了 Google 更人性化
節省了你的時間去計算 base64 後大小

評論裡有人說樓主為了噴爾噴
那我也回复不要為了噴爾噴
chnyang
2017-11-23 08:01:50 +08:00
@Technetiumer 指出楼主为喷而喷并不算喷
dazui
2017-11-23 08:08:34 +08:00
国内都是参考切糕的卖法,只卖 10 元,然后你要算算是 1 克、1 块还是 1 斤
atcdef
2017-11-23 09:17:21 +08:00
楼上有很多抠字眼,base64 压缩,这样说应该明白楼主说的是编码,至于死抠“压缩”两个字么。
root123
2017-11-23 09:23:26 +08:00
同情楼主。+1
很喜欢 LZ 的系列 APP,都很方便实用。
而且在开发 APP 的过程中,楼主也经常分享技术、运营的相关经验,很不错啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/408422

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX