2

我正在使用此函数将原始图像转换为 base64 但无法生成图像。

这是 plunker:https ://plnkr.co/edit/pn9xNwgR3p1RDqZhVNne?p=preview

  <body>
    <img src="" id="myimage" />
    <script src="script.js"></script>
    <script src="jpegEncoder.js"></script>

    <script>
      var rawImage = "����JFIF���&amp;#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#13;&#9;&#9;��``&quot;����?&#9;!1AQaq2B���&amp;quot;#RT����br��3����������0&#9;!1A2Qaq�&amp;quot;��BRS�����?���Kѐ�V��,���fu0�AկQ�w���y�x��i�|��F?���;҆�X����������(+:s��iud���c�Gf�e7�jI�;N�d�%�f����+�Uh4q;Ĭ!9ȨD��[��5�ކ�;h��gCt�͌��و1J��q�a��S��^�V���R�����U��K6�&amp;lt;��&quot;�U��~&quot;u�|Q&#10;��c�F�IoZЩX���4����\��]Kp�3K'�(#�G�ր^�d���f�FU=#C\@9�Q��g�ݠ�8Ϧ����m���fq$�jMq;���LW����+�&amp;#13;ڵ��G���;}�ђ׊��&amp;lt;���sX���&amp;gt;j���hk���~+�^����3�q4��P؝�oZ������4��P{O-j�]�d�c��pG��&lt;7��Q������zd{n��|�`�mɊ��SN�D����}�Hv��0PY�&amp;lt;\�#�T�k!0�R(�Um�n��e�&amp;gt;�a욶˽�8P����{�)���&amp;quot;����;#~,&lt;+��iA����!�nխ]f�We��q��&#13;�4��}����6�`���T��!wY�� ��4�y�����+�A]U�M�ֻ⼪�d�N��EcQ`a�u�R��Z&quot;�e/���;-�vL�&amp;lt;c���IH&quot;W2Ga���Ӄ⬨�cݻ#q��c�Y䣃F�G�$�0:�z�&amp;quot;&#9;1���S�R�WCh��a���@%#��$�i�y�u��[�6Ή����(c�Sw˻�G��X3����R��n'�m+&gt;����'�/;�%�k�4��Z�/l^�z�/l^�z��Z�}k^��!������O����������Dzx�&amp;quot;��&gt;��û#&gt;�#\~{�L-D�k��T�L��O=�I��\Qy$�1�'&lt;��=�����uR�b�&amp;#13;���({�TAr9����g}׎��y�{Լ�.�у�8���^��6��&quot;9+��k��K�V�6�����p�¦�Y�~%b�F�lX����_���v����_�O����A�+�G��e]Q*���z��G|�Y{��f��Y�CI�qu*p�v�T�Z�%0�J4�l�3�ɖ�yF���&amp;quot;�5�\�@ܧ���&amp;#13;*R�Kx��c��Is�D�Y�-���O$��!�`��4M���VX�@v�g��U�̦��2E�W��s�7=}z#��Ԯ� c���t^��n|R2H΋�� |�����w�k�9��ٵ�o1�U��nC�r@���7���wZ��-�!n����v�p���P�h_dR�����O5�ޟ���&lt;U����&#13;�*&quot;̙����7-rr�{��&lt;��3��#O�S;:/~�&amp;quot;f~Ϋ;IǸ,�V�[Kv�\���՗c���d4`6��ѣ��Õ]&lt;ϚN��&lt;��r/Fug&lt;֧���ӢуZ�&amp;gt;z�Cܟ{'c��ˏO��jB��o �����c5�:�6:H�Ώ�c�S&lt;�}{���,���o�_8תޫ|{Qm~�kU w��Zi����5B��vƮ�Y�5�Hǽ��U6�^�VKd)��FZ��ʗ���ݹ�E�]tV��&#13;&quot;�� y���a�%���h�����=v�&amp;amp;5� �ג3䒮i�Wq�#�$J  �ǖ+��`4&quot;&#13;U_c+�T&#9;D����JY!Mhv�1�N Q���ǘH��e�#�!��/X��GO��iC�8&gt;ȅ:���`$���H��m&#13;!� ��H�Op��)�&amp;amp;Q���P۷��'�;S�������";
      var encoder = new JPEGEncoder(9);
      var jpgFile = encoder.encode(rawImage, 9);
      console.log('jpgFile: ', jpgFile);
      document.getElementById("myimage").src =jpgFile;
    </script>
  </body>

我得到这个输出:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAFk9Q05DOFlOSE5kXllp…rCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP8A/9k=

我在 ajax 调用谷歌联系人 api时收到的原始图像数据

和编码有什么关系吗?

更新

当我直接使用网址点击 api 时:https ://www.google.com/m8/feeds/photos/media/kookootalk%40gmail.com/3e98af288ff825f7?access_token=ya29.CjDJA08-At3FiI0G1yXER2a-bWpScqI9vcopzjSjXe62CnvlrFMMq0noIghnPdxd1Yk

<img src="https://www.google.com/m8/feeds/photos/media/kookootalk%40gmail.com/3e98af288ff825f7?access_token=ya29.CjDJA08-At3FiI0G1yXER2a-bWpScqI9vcopzjSjXe62CnvlrFMMq0noIghnPdxd1Yk" />

我正确获取了图像,如果我检查网络,我会找到原始图像数据作为响应:

`ÿØÿàJFIFÿÛ

ÿÀ``"ÿÄÿÄB !1"AQaq¡2BRb±3Sr¢ð£²Áá$csÂÃÒÿÄÿÄ2 !1AQaq¡ÁÑð2R±"#BbáÿÚ?¹p¡iÖ?&Í)§Mj üÌÇ%QÅ/ ±7¤øéUø:à"h ATj9FuÅ( hlçhsìl¥ä½(¹´¢}êôO}A÷#±ßª\ôI%%È{~Óè}üªÕÂÍ[Órl¦3âaaçAb´ ) )PÀÓl´ «3Af' zÆ nÒõÝí³Ëâ$¡"J(µÅÈößy ¥¯Ú?XîJK éÛÓ)÷H}üW+hº×¸úúýAç®ÊF çS4jõ»ÇTp~¢2?ÛnùS¦êcTÈéð 5¸Æ$Ä»R5Ñjß'ï\^}ÓBçE"xÛ9Ñrpi%øW(i1-|Bh4í" Z®+Ùó ±D%lçENÂLó{OY(jÞb#ºf]&¬Ú±§Ä3Sâ:ãDèÏBÎ áók¥$d| Æ01>MQx7Ìc¡5Qàÿ1¼Ghº³ÀÓNÊ5Ù¬s±$È@¸r£Ú^4Íj1 ¥ª8 b8""¸®¡Hâç0_Ùc$T¼jnÝ95QÈPA-ñêÀöcTÝ'i°ÐÀìWo@]±é^Ý8×v[ KÙ(Q¿y|÷Ä6r9×qÙ¦§^5¸´Ù{Yجr:¼É®xrSQ}'cïÆäL ÐðÇõPZçïW M÷«[ëÂñì©Ê ÄIJõ¹gÙ_äOd¶6z6оÎZ_p+{¼ÄHÐúIA¾5Ð1t¯®XzÒúOaßå¯6¯LÙ¬æâ&ãºn®%K¨´ºHÄ@ Ã#õÏÎ< @jA ó¼ÒrLÈYZÍ iÀPF£"pRÙ¾3°²ÚMðû²æ>&¤}Â} ÙδµcxA PF½è ëåÂÞÔæKnã¾)q I£®ÑB[Ð Óöq¬eØG8äáþÙ?¥³IsdF?êK«yÓÂG%éà¶³oÎtæ·J /ÇJspïªSnÎ^MU=ùy4Ú=¨èy:ÿ°,ÉmÁ¸Ío5ÚR{ »i¹WfÍ^+6bÕvÊ9"[¶]e[çQf0½E[÷ÇtDa¡®nÙiå î$yצ Óh¹Öaé©ã$¾âÍv¾éL6KâÉ>®OA4îÐ)îA ÷Xñ3¾Ð±ºY."Ë+?¶½û5úÊ ¡´ÍDf&ÕfÖfû¢o¶=$ºzJÞUƵ" à-l 3fpä=©­¶{Æðjlëax+fãÆ1àRp¤3$ä;ÎI4pbIäÄ¡]ê?EýîÕDÅôG »Aö}£\ÁÄÒF7P+YÏpã_E¹ÕNÍæ¦Ö«7Eg'"/ûh>4¥­'né´ St :ÇyG0JÒ;p[Ù³ÃýÆÖ:éM(ÙaZº}F¸qÕy7¦¯»V=Ùy2^Ûcy!z)]ý¥uh¼¤µ(Þ»2räo|NÀìxE~¬]ËeYYVYH¨*ÂäFSv§©bS!É2ãUâ}´È×1Fâ@t<åI ]%·¯ dv÷üùEkưõS©¢mÓdÜ'îà9ôoBPõb½U5ö¥¢çc>Ì׿Ä。wÊÀÞü£²1á1¹·Üo4%ó*25qÆ6hɶ{3>Ä©rÄÕ¼>Sz·¬'?¤D²YØ2ÉJÜiù˾Ç_Úc@£ 0è^c¬´w¨9³Áıº¥¡Ï%$®7Fó{NØ»óÅ«AÀPpþ^Ä}@¯Ô¬¹o«¾&MÙýw²mÃÔÓ¨ì(ðWSN1-Ô«¹¾_d{ÍOe!Aèã5©êHÿÄu!( KJyÑRúã!}O¥ºÊt)çYhÖ½_iÒf­änæV2Uî5ï U_Z´¨b Tm£ìþÑbbXNäåbpYÔ|;§Ì1x­RV©ÀAÌp ò0(×-Ù¦öw6w8Ü¥ùêJN[­t{1lýµJ¸èÂÁ+àvò>þu]#E¡à§vG¤¥e$MÔVürgpS&¤[fNI-f´ËÔgyUsf¼RíBA\ZG_í¤©[ª¾d®6[ ¶|*Øf®Tµ±Ç4ô3þ°Ìæ ·H×£4YEYi)Â"PðU®|Ï|:Y´æõnn@òo ¨t\Cdîõ´Åju#3ÚwÓq1Ý¡ôSÍ8[êòyýªè1s|òÉ<1-ÞiÕRÀÂËÂZ´AEAÉ/´zjòUØaªÏiÑÖ%E ¢x²xÎ:aBú$%#($MÿÙ`

但问题是 url 内的令牌有过期时间最终链接将过期。

我不明白我收到的两个图像数据之间的区别,一个有效,另一个无效

4

1 回答 1

0

Contacts API 是一个安全同步 API,并不意味着以与图像主机相同的方式使用。当您的 OAuth 会话处于活动状态时,预期的使用模式是下载数据并可能以某种方式存储。对于 JavaScript 中可能是画布的图像,或数据 URI中 src 值为 base64 编码的 img 标签。

我不确定您是如何获取 JS 片段中的第一张图像的,但我可以清楚地看到字符串中的 HTML 实体,因此在某些时候数据可能在被视为格式化文本时被损坏。

于 2017-01-04T22:34:26.300 回答