0

昨晚我问如何在不使用 fopen() 的情况下使用 url 作为 'imagecreatefrom...()' 中的参数。cURL 是作为我的答案提出的,但是当我尝试插入它时,以及在网上找到一些建议时,我就是无法让它工作。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://curious.astro.cornell.edu/images/xraysun.gif'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
$data = curl_exec($ch);
curl_close($ch);

$image = imagecreatefromstring($data);

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
// If image is wider than thumbnail (in aspect ratio sense)
$new_height = $thumb_height;
$new_width = $width / ($height / $thumb_height);
}
else
{
// If the thumbnail is wider than the image
$new_width = $thumb_width;
$new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
$image,
0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
0 - ($new_height - $thumb_height) / 2, // Center the image vertically
0, 0,
$new_width, $new_height,
$width, $height);

imagejpeg($thumb);


这是imagejpeg()输出:

����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality ��C      $.' ",#(7),01444'9=82<.342��C     2!!22222222222222222222222222222222222222222222222222����"��   ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B����    #3R�br� $4�%�&amp;'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��)�P< ����ZxZUZ�R����4GR�UJ�R����2���S�&gt;�uw�K #��6��b1�V1��#�85k�+nIO�hZh�7.�e�r;Weoḭrȹ����w-R����ӕS��>y�;复����{�B��F z��(ZF�$��U��YIh�;�7P)�F�Cs&G�@�&gt;���^OY�El��|�u�H&��mͶ9B���Zq��(\3�&lt;�;1���R��":ȳ���'>��s�MD����e/���*�$�o��Z41��`7�Ӛ����Ȗ#�Ðx��A������t��T�ܮ4rWp��{V|��]}��N�f&�%����\Bcb�#��[]MXƵ>ddȘ�kBH� �A3ƫAܢ�Q���*N��g�R�Eb)�T�j2*�9���)�QL�ĸH��J��l���z�N�ME���v=*4�*%N��֕0:�ޝn�~���};���_��:j(��L��?��[�l����/ 1ޔG ̈́�p�g$c�hUd�����5�ԩ���滗IDB@   �e }3T�m��.@;���֭B�$O��%0���(�ZI6����}Er�腡 AVe�1�s�ǧC�1#�m��Y�nM�A���WbH#.�\�����֙4�6��#�;������m�w,Z��)��p9�8���jz�f5P���J�IK�/�-��c����$��&��J��v��SՓk�q4��X�7F�4�gX����T��>�����[ȧa�J��R��)PФ���*�9h;2k�VR�Y�� ϶*�Β�Q���!G<`���S��<�*�P:�G�_Ӛlw%ʰA�����GX����9+�6KY�J����"u���(�B�"�yA���9�Iop����eO�z�lg2��"pRG:ђ:Uy""��4WKa&G#�a� V �賂�O�����̆J���ʘ��+�;�%jVer(�����qԲ��E�D��F+6z�c�I9.    ���)d��+E?;O�a�8��WY�m��E�_m��$�n�s������IG���Us��=�y�3����΍UZ�z4B2K�J͌/�:}i]fr���=03'\w���m��p�2|��<���5,��.#(���-��K�ٚ���gO�x�������Mv%�d�c�@'v}=��N{k[�kF�i�y%Y%���~uGːFm���7�"1�zZ(�n���l��P��$k;�H�n�����[��I;}�ݭ��|��zdbS�ZHQ~PX�{�����Cp�,�;�$e����qBM6�5��.�"�e���U����C�pS��E[�y(G�"�A��|U=��5���JHb�F��c����b���H"�6_,d0����`�b�ؼ�EZӭ��;�{��#(�z�G?�K6����,<�e���=*9���'�\f�bYa�7Nꌹ�A���lSU���m��;��Է�pT�v��9�UmB����n��#��-;!�������#��#ڹ�J܆/����,�Ep���e�:�S�Y��B�i�Xm]X�gN�Iֵ��k:U��~����(r�� )�(��&Qԝ*�u]j�u�=:��X1t@���x�V֒>�$�тȁT�� *��7��$��4��|1*�    �͎�?�Z��5%ҧk�P �&lt;�֪Z�r��B������}�!T�sF�4{�����*�e+�H�II4�6u]k�ȇ1��N�xA�*��0����UC`�u?�V��ꕃ�*7`���Ҡ��od1F�1�����Z��  <�2�,�nX� ��7�:d��#,�w�e�����J�t�ʿ���kM�ۨ�EX���^rA�y⡚7�/p���Ѓߊ�-����6ljЙw��}* ������R$EP@#����k+j�J�[��?��,bs�]��ܒ3^�}�4����%�N�01���+ƅ��v�Ll�(@X��j����E���&lt;� �O�:iQ�����n�2�i�΃�OQ�#�G)A��'!2a6��ќp:Z�|C�-��p6;c���Z共��27��Z� 7�[t:pʢ�����;װk�T�"��鰎�֩^_Gv�P�VfWyD��U>���r����A��]T(���S]�&lt;3}k2^�zS�� �v����c3*0�����,��֬�UTՈ��A�\N������|�&gt;k��������ҡYt����$~?�c^v6V���PZ\����d���0��~������Yf3��c�z�g�U�!w���Lq��u�X!�����e$�;�+�w7b�iL�� ����j��y2�HŔ�T��S���M�M��Xʸ<�ydu� ����,�-��9PcauX�;>����͊��m�"[F<��R��O�_J�&lt;�B�����$6w(8��j�1�v#����vzg8�S�X;٥��  ��a�/���IE�Ù-����eB 'v0�|�ƧHJM7 ��D�G��Ԉ��@�c2۱�ñ��ZΩt!��<��� g��=��7!�M{�&lt;����L�\��>c��@�U�+�g�cP�n��3�$��������S^��w&���;�&lt;�u���Tr��$�BCl�)��r"e�s����U������{�(�y�� ����1����i�,���#��v�Đ&lt;����n�U�#���֢j�]49#�.�#*���Zx�Yf�E�"I�n��ڢV�������$��������[�&amp;H��  ��A�v�W�P�e&H�%�d����My�]o1��@l�1ӯ��騾M�3N����c�jT�9�M���FA�6�����țrB�|��8\�ߥs:��L?.�^�6�����6U�y�8���@*�=:���i=I��3��� � "�Iֽ��yX��QJ�V�����b3U��CJF�e��WE�L�b?o��s5miS&���CG?���d9����N�锘�"+K)ʎ1��zTI,�p���О���$M�YY1c��g���Y�L�~F@�g�$�;  d�8%�"��&Y��3��z�&gt;�82�1���!��HN���dEC��p��=���Q���9>Z�Pv��$��>�:5�$��bo?�R��!�9�Ǩ=��1u4�8t!$^\y==x��8�&gt;b    bS+�{��J����s���īl?���P�m��Q&\:���8�⡑ƞ[<(Y�X��L�(yH��>�����Yw3��=���B�a�v��Ms"  �awd�z��޲�B���hfb�����Ϧi��ɔ��b@RF01���Q-�o*30E�1�-���1M;��N�$�b�#���s�c�������,p,��&M�BH��P]�S������c�i�I���L��ljpF=x�����@�ƚ#3���x���ʴ/��\i�B  @�����#�ګ^��g*N�S�ګ�̒8�R�ǵkd��k�HV�pd ��`c4�h���wg��S뎔�B$ܒ�*(-׀ �Җ�s)v��>E����M=|�@҈�ۖ;���c���~����Rq�WC1�j2�FrGA���e��v�&amp;�pkV�EisT�zJ�-z���1H��R��<�nD��CU���:��D��ǯjlΓoT�Q��T���5�sW1ޱ���=�4���d�iH�1V8_Zpx�F!/ʋ�ϧ�di�"Ehdp����j�82���*��{zׇR��|����+�W���&lt;�6�'$w�_֤�$�A� 2��wv<��-���ꊒ�\(���2�m�b̀xON `����g2*�s�΄�����N}�m��!��a������5�ĩ�Yc9�o9E'���b���@��3�z��*�0#/���sX����J{�y`p� �f�S��RGd���͹Cnj��4�w.�   h���oS�����MA��Z��wS[\1�q,��@8:�x'��$A���ˌ�{�SSZ�o.�c:�^1� Ѷ�eiX#7�Τ63���5\ʖ���� �#�)n7:`����jQM�a̱0 K�H�O�[p�R��{��U%����)�iM�$�^���S������k9�U}~�%^��,ev`��2J���WO��|Ĝ�&gt;�w�T�Oh�) +�#���c�ƙon�&amp;�    ���S:'��7`�T���w=i�l�S[�&lt;���1_((۱s��֩[��"ƥ����>��M"2��b��@��V-c��]���^F�ps�?.?Z�+-�3��x� y-��w�?�Q��d�ӎp8���MQ��E*��2���|VN��e@=�jSWI�\����Jj��J^��Gc��2�u��������"�Ii'��v�+3D�a�5f���a��Im�����n��~J�Ei��Ż�a�������R#���������;V-��:Zŋx�8����Kӝ]yt`    ��n�r1I�үY]%�r����]R7[�Ҥ�-������)�&lt;�O�!�ԏ| [��cL��FR0�ۥ�� �ݴt�?���yq��; m��H=;���+Kݠ�l�z���f��s�&gt;�:�r!qTxQ�O�s�����8�2DC(�s��)@���J� ���{������ItA�M�(���$��sUa��bC�9�;�ǽXG=����g�#�;c�~5n��"�pKw'|h��GOj�nU��)��$w$wp n��^���1yp�#�V=:����O.��a�9��[ֵ�Y���+� ��Y��5ڽ�L])և$]��j�;�n`��W ��=�y����x���P��is�5��N�`���3���:���k����,�ҵu*֚�W�A��R�/q|�p�J�Pl���9�p?J�!��d��Z�`#�G`?¬�l�,R�"�!�Q�h00$c�"�o���K��WFj��i�*��O�ޭiڒ�H$X��,��v���j)�+�Y�ڣ���)��ܼ�  ���b���j�׆d�-��c��z��/�`�pI�*���I��c�$�ϭvP��ni:�(dҊ�#f�#櫹�V(�15���4SI��<��*>�"���F8 ��.E��e�ƴ-�p�$�VP��W��S;����wL���"G������!���ås�\2p�Jӳ�%��`���d¹�Ni�'�a� s\��ֆ�tu-� 0:V�\3���kd���zW?���M�_�&gt;=ZX�����ʸ����Q�;��I�s\�l[���*�4a��d��{t�Z�!��}��1\����#�`���OC���&gt;��{6п�W���Ey5�ΛwV!���R��,q#�r�w}�z����"������9�}Ej��t$)I�X�O�]]69H�r�)����k�ڴ�f���G=�B�e[� ����^��`|�byw^B�L}j��dܟ�R����>��H4�@��b�w��R�}�Ջ[�f�D�s�ێ�F['���H2F�ZF�)�_bq��v���#�m�o�PJ�$9��#;�R���Л��'�U\��<�!p�2q�ͼ�E��M������U�MTG,��rF��� �e���c�=k��a��l[ij��2���ۜ�^�����j&�=��޽jT]�z�▃�J��=���5t�y�k��Bƕ��Mh��T�ƓE4�*�f�����E3�� R6���V��L��d��T�SE p��RS�h[�w0Ʊ�#"�)�O��Vs�d��s��I.����.�*�z�Ҵ��Y����� �d�Q^}l�)���-D)ò�2�Nrd�~��(`��x�Ɗ+8���bٙs��O�+��Z̖�YX�����(��ti��G-J�[233�����$�i�Mjș�Q&�*�9Ɍ-Q�EH��c �Eg<��EPd���


A var_dumpondata为网站上的数千行提供了基本相同的内容:

string(123362) "GIF89a������!)19J��������������������������!�!�!�!�!�!�)�)�)�)�)�1�1�1�1�9�9�9�B�B�J�R�Z�c�k�s�������޽��c��1��!���{��{��Z��J��9��)��!�����޵�֥�ƌ��s��R��B��1��)����������Δ�Ƅ��9��1��!�����ޭ�΄��{��R��B����J��9�ޥ�֌��k��������{��s���������19Bs{����JR����Zck���������������,��@� H�@�8q (h�@�"lx�D���Сŏ�I8r�NJ&amp;㘄�1���!E�,`����8Sތ3g�J�rz�왳蜟s��,:�hS�$��<��S�D�NM���V�N�^e���T�9�|��v�ڶn��Mjq��u������˽[�x�pE�=N���Lj-=0��䅔R0���A `4hͦ?�&lt;�t��\�M��l�j����ܾy��-@Rǖ�*������JG����#k������e���Cໜ�?-��y5΁�f��9{3$�9��uj�(]����z�u�U�y�VW�)�_\�$a��%��Hj���[i��Y<]��X�a`Sf���R%�՗M,���K%�$�z�dBHݏE6�F�U���-$�o���Yg���i���䑶���l��v�o[��� �en�X䏃-�\r,I��c'���F�4I|n�RL�!�ލ!j�{6Q�Q/���I �{O�G`�Vu�aSY�'�ZN(a�V�|&�W`�"���|2��֪���j[�J����k��%`|*����6x!{q-�3���x*�g���y�fGY榛qP��@��%t�i�k�F�����[����֤��n�o��rY�o��ɛq�f$.�'�{tU�'G4Ť�76�w��4�u��t����a��.{_�a�Z�ʽ�묺���|o��\�+ ����j��+� ���2']t�&gt;��H����@���S?���4_H��s�ڠJ�����)���J�)D�����B}�\���Pf�E�)�gVNIo���ko�a�[ۘ����c���0M�)��t�]��Kn�hRQ��M�UF]��Wj�r�����ϫ����C���T�HѻC��B-������C'���H_] ���&lt;�W����G�����&lt;�Pg?���#�����/>�������;�3�L�h��6�'R�!�Qcp{�4"��d�`�қhR%���]}�R�^C�z�k5^ڗo��xbA�2�9*&�YQ�,�B��%@��T��!�mg���Өf��Aw=��������I��ǻ^��w>�)1���"����'���XD ��E,��]̢�0*��T�"�p=:�qd��8�-�Q�׻��H�$�ωK������ (׹�����(�1�Y`A$��w��o�r����~}�^[rMs9�$�:-9["ϣ�j��&3JP��ZMeh� �������{����W<"�o�Sf2�xEb:��X|���;汚u�#6��M6�������)G7���朣9��Mq�����C� �nΓ����>�Y�O{���t\#��E1:1����!���Nr8�s$b0D2�h���]�H��`���(ŦKY:\q��H�P=<ʓOPh����,���d!�\�UR�/�v�Y �|�l�����&lt;���-��(U�jq��̪;�Y�rs���*X�i�yڡ���Z�zO����p}+[��V>ԁ|�^��W���}�k��v�~��������=�`�X�浭n-k<��F�F�}���j�"�ܥD�J  u��0�����[S�ji5�I�(x�y�0�JHL�+�V"�&lt;�)�r_x3A�*fF����(��}��(ը*э��*5�HNm�1�] (A�Iϴ���d��]�*��N6���CckX?H�~`�����.��N���7��� �+���p�� ? ��GL�[�8��W��?������X�구l�g<��G-:q������:�ve<�Y ��#�I��e�Է��\�M�%�V��K�Mgz3��''�AOupZ�����dNs�����fz7�ټ�Ùg��w��L'��� b��o~�:W��S�sc�hD��C"K�q�S��x�2R�A虂���N�h~�yq��8�%��àd ����^��(�i�1��,�6�i:❇�6+��zVvC���o}����"������do�ڢ�y�w0�� �9�� T��T;6(v���sm�z��F��=}�h����f��{-�O7����� t��m�`jOu�m-kO���.�;���������6��U�� X�N��]�׵z�ߌ㝡���e�!��֕����N�T�L_����_Ř�t�k����>'b�Wi'`��fɆj>7jߦlBl�fi�l�fm��v5�k�vl��kd'k�6w��k6�i�kh}���s3�|�uc��V��Y�tU�FU��FU$d�D;�r!�B?A-"9��0����$�&amp;�I �Q�8h�(pq{ʢC�s>b䃝^��U:�h��r�7_Us��`��`�Vn}t�/�a    ��i��t�V~@J0�ht7�DWtE�:���ij5�����+Ƈ�Hv�t�VjCPk��~>�m��t��k"��w�l�f�C �XtD�GGt�xtfgk�uw�t��u�v�8�ӆl�6m8��v��t��k8m�6cphs/�r8V|��c`V��GbhE��<,�r!?!)���Qw$�S��@r�$��eQ���,W+>�5�3=P��No�4h��ho5O�GY�VYvX��s;Gns8}x�a-�a �a f���t�6����ؒFWt:`w��kCG�u��F��vЈw�V��i9�j�t��s�&amp;b�&amp;���CЌ��iK����u��uF7��v�I�vCpH�p����u-��C����s_wwlW��H�v+iw�6j��j_�tG��:�5�w�k��~ �a &iٸ��Ic��W��c6�U��G��C�s;�R#+�"�S(�s-%pR�&amp;O7�4&#:C4EE�EcN�y���V�r�5Yp�`0�a�a Ynf'����|H��8��Ƈ+��R�~��uE��(��8�A0�N��k�֝9���&amp;�6��6tD�v�w'��m爣6k'pl�6�@ ���s���:l]7l1@t}�t�ɝ90^v�����+�w���fi�8d����tȈj���9@ W!��:`i�j����l��v�i�G���`qh���~��x5��u�^%P�dUu=�H*Sq(�d�649�Q����dI�c+V�מ)mG


A var_dumpon$image之后curl_close()给出:

resource(65) of type (gd)


此外,如果我在所有调整大小的代码之前尝试使用imagejpeg(),它仍然给出基本相同的东西。我被困住了:/



即使 Musa 修复了设置内容标题,它仍然只显示原始图像数据:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www...../image31.jpg'); //Actually full URL in code
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
$data = curl_exec($ch);

curl_close($ch);

$image = imagecreatefromstring($data);
//var_dump($image);
$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
// If image is wider than thumbnail (in aspect ratio sense)
$new_height = $thumb_height;
$new_width = $width / ($height / $thumb_height);
}
else
{
// If the thumbnail is wider than the image
$new_width = $thumb_width;
$new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
$image,
0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
0 - ($new_height - $thumb_height) / 2, // Center the image vertically
0, 0,
$new_width, $new_height,
$width, $height);

header('Content-Type: image/jpg');
imagejpeg($thumb);


尝试使用 jpeg 开始只是为了看看它是否改变了任何东西,但仍然有相同的结果,胡言乱语。




在显示图像后,我尝试在标题中为此代码创建一个函数:

function resizeJpeg($url, $thumb_width, $thumb_height)
{
echo "URL: " . $url . "<br />";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
$data = curl_exec($ch);

curl_close($ch);

$image = imagecreatefromstring($data);

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
// If image is wider than thumbnail (in aspect ratio sense)
$new_height = $thumb_height;
$new_width = $width / ($height / $thumb_height);
}
else
{
// If the thumbnail is wider than the image
$new_width = $thumb_width;
$new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
$image,
0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
0 - ($new_height - $thumb_height) / 2, // Center the image vertically
0, 0,
$new_width, $new_height,
$width, $height);

header('Content-Type: image/jpeg');
return $thumb;
// Also tried 'return imagejpeg($thumb);' and simply 'imagejpeg($thumb);'
}

并尝试以这种方式使用它:

$imageData = resizeJpeg('http://upload.wikimedia.org/wikipedia/commons/1/1e/Stonehenge.jpg', 150, 150);
header('Content-Type: image/jpeg');
$imageSrc = "<img src = '" . imagejpeg($imageData) . "' />";

它必须在文件中还是有办法让它将其视为 URL?

4

1 回答 1

1

您必须为浏览器设置 mime 类型才能将数据呈现为图像,这可以通过在输出图像之前设置内容类型标头来完成。

header('Content-Type: image/jpeg');
于 2012-09-09T20:05:27.970 回答