原始图像数据到base64

时间:2017-01-04 11:21:31

标签: javascript encoding google-contacts google-photos

我正在使用此功能将原始图像转换为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���&#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���&quot;#RT����br��3����������0&#9;!1A2Qaq�&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�&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����+�&#13;ڵ��G���;}�ђ׊��&lt;���sX���&gt;j���hk���~+�^����3�q4��P؝�oZ������4��P{O-j�]�d�c��pG��&lt;7��Q������zd{n��|�`�mɊ��SN�D����}�Hv��0PY�&lt;\�#�T�k!0�R(�Um�n��e�&gt;�a욶˽�8P����{�)���&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�&lt;c���IH&quot;W2Ga���Ӄ⬨�cݻ#q��c�Y䣃F�G�$�0:�z�&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�&quot;��&gt;��û#&gt;�#\~{�L-D�k��T�L��O=�I��\Qy$�1�'&lt;��=�����uR�b�&#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���&quot;�5�\�@ܧ���&#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;:/~�&quot;f~Ϋ;IǸ,�V�[Kv�\���՗c���d4`6��ѣ��Õ]&lt;ϚN��&lt;��r/Fug&lt;֧���ӢуZ�&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;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;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调用google contacts 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Ö?&amp;Í)§Mjü%Ç%QÅ/±7 ¤øéUø:à“hATj9FuÅ(hlçhsìl¥½(¹'¢}êôO} A÷#±ßª\ôI%%È{〜Óè}üªÕÂÍ[Órl|3âaaçAb') )PÀÓl'«3AF” ZAE nÒõÝí³Ëâ$¡“Ĵ(μÅÈöß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ÎAOK¥$ 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ã¾)● 我£®ÑB[d ?Óöq¬eØG8äáþÙ¥³IsdFEK«yÓÂG%éඳoÎtæ·焦耳/ÇJspïªSnÎ^ MU =ùy4Ú= EY:Y°,ÉmÁ¸Ío5ÚR{»i¹WfÍ^ +6bÕvÊ9" [¶] E [çQf0½E[ ÷ÇtDa¡®nÙiåI $ Y×| Óh¹Öaé©ã$¾âÍv¾éL6KâÉ&GT;?!®OA4îÐ)IA÷Xñ3¾Ð±ºY“E +¶½½û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=Ùy 2 ^ UCY Z)〕ý¥uh¼¤μ(TH»2räo|NÀìxE〜¬]ËeYYVYH¨* ääFSv§©bS!É2ãUâ}'È×1Fâ@ t&lt;åI]%·¯dv÷ùùEkÆ°õS©¢mÓdÜ'îà9ôoBPõb½U5ö¥¢çc&gt;Ì׿ÄwwÊÀÞü£¹1á1¹·Üo4%ó*25qÆ6hɶ{3&gt ?; A©rÄÕ¼&GT; SZ·¬'¤D²YØ2ÉJÜiù˾Ç_Úc@£0E ^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| OE&LT; 1-ÞiÕRÀÂËÂZ'AEAÉ/'zjòUØaªÏiÑÖ%E ¢x²xÎ:阿布$%#($MÿÙ`

但问题是url里面的令牌有到期时间,最终链接会过期。

我不明白我收到的两个图像数据之间的差异,其中一个不起作用

1 个答案:

答案 0 :(得分:0)

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

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