我正在尝试开发一个插件/组件,可以将媒体文件格式从一种更改为另一种。具体地说,我需要它将"tiff“文件转换为"jpg”图像文件的数组/单个副本。
请指导我如何实现它,或者是否有任何类型的教程链接,我可以从那里下载它或获得一些帮助来开发它。提前谢谢。
发布于 2012-07-23 17:01:41
我们在我们的内容管理系统(构建在CakePHP 1.2上;如果有任何我不知道的重大差异,很抱歉)中使用了一个行为。这使得控制器逻辑非常简单(实际上,我们使用的是一个烘焙的控制器,根本不需要任何修改)。
不幸的是,在GD (PHP中的默认图像操作库)中,TIFF不是一种受支持的文件格式。您需要使用ImageMagick或类似的工具来完成实际的转换,但是在CakePHP项目中实现它的逻辑与我在这里描述的没有什么不同。
行为(在我们的例子中)被用来生成缩略图和页面分辨率的图像,并将上传的文件格式转换为JPEG。
在其beforeSave()方法中,它检查数据是否已指定(并且没有错误),然后从posted数据中提取tmp_name值(并删除posted数据对象)。
在它的afterSave()方法中,它实际上自己执行了图像转换任务(将生成的图像放在磁盘上的预期位置),然后用上传的图像的ID更新了扩展模型上的所有外键。我们在afterSave()操作中执行此操作,以便我们有一个数据库ID来命名磁盘上的文件。
在它的afterDelete()方法中,我们取消了磁盘上文件的链接。
在模型中使用行为就像告诉模型一样简单(其中ContentImage是行为的名称):
var $actsAs = array('ContentImage');虽然我们也使用模型来定义输出目录,因为我们有几个实现行为的模型,而且这感觉像是正确的事情,例如在模型中:
function getThumbnailDir() {
return WWW_ROOT.'img'.DS.'upload'.DS.'thumb';
}在行为本身中,输出路径变成:
$Model->getThumbnailDir().DS.$Model->id.'.jpg'https://stackoverflow.com/questions/11607399
复制相似问题