使用PHP调整图像大小和转换

时间:2017-08-23 13:42:08

标签: php html image file image-resizing

我的以下代码存在一些问题。我有一个任务是开发一个可以上传图像的PHP程序,然后将其转换为jpg并将其调整为最大宽度300px或高度300px。纵横比应与原始纵横比相同。

最奇怪的是,函数“convertImage”输出的内容如下:

setting

使用img-tag的最后一个回声也没有出现在html-dom中。

HTML:

����JFIF�����'�1�y�^�>�9<���H��^_������|6��a����B�����|%��^#��r�R:,������\z��c����='}U���S�s��$�bO�_��O$"���N74�����tл��ao/�8ԑ�G'�04���'��O�C��7��c1�99#8�׾}y�|�y�������3]ּg��G�t����Q��1x_����v��|8�n��^x�:mγ��[��iQ\>��]*���ĺ��-t{[��d��<-~x[���$���c������q�qӌ���d��=B9�3�<�y�;�I�תx��w�o�����~!|'��������T�7��U����~����ׇ͍5�J��M����,�kcas9�L���Ek[�f��3��랞�=pN2I�`�i���k�i�M��uBc�#���n���@rrFA�>�t�2y�|��c����׾G=r2x��xoW�M�i�5�O:[�yq$�vzu����Q-����Ok��[�Vk��V[���b�.n ��:�g T�*�*IB�)�rv�a��'�)6��vc�e9F��)4����z$��0��?��r8 ��1����3߸9�k�?�}/��oi�Ե�x�h��9��eS��!�����-tD�P��jw�}

PHP:

<form method="POST" enctype="multipart/form-data">
 <table>
  <tr>
   <td>
    <input type="file" id="pic" accept="image/*" name="pic">
   </td>
   <td>
    <input type="submit" id="send" value="Send" name="submit">
   </td>
  </tr
 </table>
</form>

函数convertImage

<?php
if( isset( $_POST['submit'] ) ) {
 $tmpName = basename($_FILES['pic']['name'];
 $size = getimagesize($tmpName);
 $donePic;
 convertImage($tmpName, $donePic, $size);
 echo '<img src="data:image/jpeg;base64,'.base64_encode($donePic).'"/>'; 
}
?>

如果您需要任何其他信息,请随时问我。

谢谢大家!

3 个答案:

答案 0 :(得分:0)

请参阅以下链接,了解PHP中的图像大小调整。

https://code.tutsplus.com/tutorials/image-resizing-made-easy-with-php--net-10362

答案 1 :(得分:0)

我在卡达斯的帮助下解决了我的问题。谢谢!

我必须从

更改代码
imagedestroy($imageTemp);
imagejpeg($resizedImg, $output);
imagedestroy($resizedImg);

imagedestroy($imageTemp);

//starting an output buffer to get the data
ob_start();

imagejpeg($resizedImg);

//here we get the data
$output = ob_get_clean();

imagedestroy($resizedImg);

答案 2 :(得分:0)

您的新图像计算比公式是错误的。这是固定的:

if ($ratio > 1 ) {
    $width  = 300 * $ratio;
    $heigth = 300;
} else {
    $width = 300;
    $heigth = 300 / $ratio;
}