如何将 .tmp 文件的内容转换为 png
How to convert contents of .tmp file to png
我有一个 PHP 脚本,如果用户上传的图像文件不是 .png 图像,它会在将其保存到服务器之前使用 Imagemagick 将其转换为 .png。但是,它只能使用 HTML 形式的 .tmp 文件,因此它必须转换 CONTENTS,同时保持 .tmp(及其文件名)不变。到目前为止,这是我的代码:
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) {
$uploadOk = 0; // don't upload later
$im = new Imagick("$tmpName");
$im->setImageFormat( "png" );
file_put_contents($tmpName, '');
file_put_contents(file_get_contents($im), $tmpName);
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) { //check again
// try again or throw error somehow?
} else {
$uploadOk = 1;
}
} else {
$uploadOk = 1;
}
如何正确使用 Imagick 将我的临时文件的内容转换为原始(非 png)图像的 png 版本?
编辑:也可能是脚本应该可以正常工作,但问题完全不同。目前还不确定。
如果你要使用 IMAGICK 库,那么你可以使用这样的东西:
...需要解释您如何获得 .tmp 文件,我猜是通过在您的网站上使用表格...所以...
.. 获取 post 文件
// This equals to 'some/server/path/temp/filename.tmp'
$original_image = $_FILE['tmp_name'];
// Lets work on the Imagick...
$img = new Imagick($original_image);
$img->setImageBackgroundColor('white');// red, black..etc
$img = $img->flattenImages(); // Use this instead.
$img->setImageFormat('png');
$new_image_name = 'nice_image_name.png';
$img->writeImage($new_image_name);
看看是否适合你...
我有一个 PHP 脚本,如果用户上传的图像文件不是 .png 图像,它会在将其保存到服务器之前使用 Imagemagick 将其转换为 .png。但是,它只能使用 HTML 形式的 .tmp 文件,因此它必须转换 CONTENTS,同时保持 .tmp(及其文件名)不变。到目前为止,这是我的代码:
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) {
$uploadOk = 0; // don't upload later
$im = new Imagick("$tmpName");
$im->setImageFormat( "png" );
file_put_contents($tmpName, '');
file_put_contents(file_get_contents($im), $tmpName);
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) { //check again
// try again or throw error somehow?
} else {
$uploadOk = 1;
}
} else {
$uploadOk = 1;
}
如何正确使用 Imagick 将我的临时文件的内容转换为原始(非 png)图像的 png 版本?
编辑:也可能是脚本应该可以正常工作,但问题完全不同。目前还不确定。
如果你要使用 IMAGICK 库,那么你可以使用这样的东西: ...需要解释您如何获得 .tmp 文件,我猜是通过在您的网站上使用表格...所以...
.. 获取 post 文件
// This equals to 'some/server/path/temp/filename.tmp'
$original_image = $_FILE['tmp_name'];
// Lets work on the Imagick...
$img = new Imagick($original_image);
$img->setImageBackgroundColor('white');// red, black..etc
$img = $img->flattenImages(); // Use this instead.
$img->setImageFormat('png');
$new_image_name = 'nice_image_name.png';
$img->writeImage($new_image_name);
看看是否适合你...