Php Imagick can';无法写入SVG文件
我使用Imagick打开图像,调整其大小,设置图像格式(如果需要),然后将结果写入另一个文件夹。它可以与ICO和PNG一起工作,但是不能编写SVG文件 ImagickException:无法在Imagick->writeimage()中写入文件:C:\Sites\devdesktop\test\Sites\default\files\tempimages\abstract-spiral-striped-background-100.svg(C:\Sites\devdesktop\test\Sites\all\modules\testmodule\testmodule.module的第44行) 这是来自Drupal7的错误消息 这是我的密码:Php Imagick can';无法写入SVG文件,php,image-processing,svg,imagemagick,imagick,Php,Image Processing,Svg,Imagemagick,Imagick,我使用Imagick打开图像,调整其大小,设置图像格式(如果需要),然后将结果写入另一个文件夹。它可以与ICO和PNG一起工作,但是不能编写SVG文件 ImagickException:无法在Imagick->writeimage()中写入文件:C:\Sites\devdesktop\test\Sites\default\files\tempimages\abstract-spiral-striped-background-100.svg(C:\Sites\devdesktop\test\Sit
$file = file_load($form_state['values']['fid']);
$image = new Imagick(drupal_realpath($file->uri));
$image->setImageFormat($type[$type_num]);
$image->resizeImage($size[$size_num], $size[$size_num], Imagick::FILTER_UNDEFINED, 1);
$destination = 'public://tempimages/'.substr($file->filename, 0, -4).'-'.$size[$size_num].'.'.$type[$type_num];
$image->writeImage(drupal_realpath($destination)); //<---problem
drupal_goto(base_path().'/sites/default/files/tempimages/'.substr($file->filename, 0, -4).'-'.$size[$size_num].'.'.$type[$type_num]);
$file=文件加载($form_state['values']['fid']);
$image=newimagick(drupal_realpath($file->uri));
$image->setImageFormat($type[$type_num]);
$image->resizeImage($size[$size\u num],$size[$size\u num],Imagick::FILTER\u未定义,1);
$destination=public://tempimages/“.substr($file->filename,0,-4)。”-“$size[$size\u num]。$type[$type\u num];
$image->writeImage(drupal_realpath($destination))//文件名,0,-4)。'-'.$size[$size\u num].$type[$type\u num]);
此代码段与ICO和PNG完美结合,但除了代码的一点平静外,不要以SVG格式编写文件
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="200" height="200">
<g style="</svg>
SVG
与JPG
或PNG
的图像不同。
在大多数情况下,它只是一个带有打印点的xml
,通常没有维度和分辨率
200
的width
和height
正好是它在px
中保存时的大小。因此,您永远不需要“调整”svg的大小,因为它将无限扩展
如果在img
标记中放置SVG
,并定义尺寸,如:
尽管它在SVG中被定义为具有200
的维度,但它应该在不改变外观质量的情况下放大或缩小
由于结构上的这种完全不同,在某些情况下,它不会遵循与渲染图像时的jpg
或png
相同的规则
如果这是在Drupal中完成的;对只存储文件而不调整大小的SVG
做一个例外,并在打印所有图像时添加尺寸。它不会损坏渲染的图像,并且应该显示与它们相同大小的SVG
TL;DRSVG
是一个xml
文件,不是真正的图像,调整它的大小是毫无意义的,因为它没有实际的分辨率或大小,并且可以无限扩展。它们看起来很相似,因为它们都是视觉元素。将SVG
作为例外,使其仅存储文件,并且在打印渲染图像或SVG
时,将调整大小的尺寸添加到img
输出中