Php Joomla 3组件-上传图像并使用Imagick进行转换
我目前正在创建一个组件,其中用户创建了一个新图像,有一个上载按钮和一个名称输入,图像的所有基本库字段 但我遇到了两个问题,一个是如何编写以下代码,以便它导出一个黑白图像,另一个颜色缩放到amax宽度160,下面是我的代码:Php Joomla 3组件-上传图像并使用Imagick进行转换,php,joomla,joomla-extensions,imagick,joomla3.0,Php,Joomla,Joomla Extensions,Imagick,Joomla3.0,我目前正在创建一个组件,其中用户创建了一个新图像,有一个上载按钮和一个名称输入,图像的所有基本库字段 但我遇到了两个问题,一个是如何编写以下代码,以便它导出一个黑白图像,另一个颜色缩放到amax宽度160,下面是我的代码: function save(){ if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR); $input=JFactory::getApplication()->input; $input->
function save(){
if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
$input=JFactory::getApplication()->input;
$input->get('jform', NULL, NULL);
$file = JRequest::getVar('jform', null, 'files', 'array');
$data = JRequest::getVar( 'jform', null, 'post', 'array' );
$path = JPATH_ROOT;
//
//
// Make the file name safe.
jimport('joomla.filesystem.file');
$file['name']['logo'] = JFile::makeSafe($file['name']['logo']);
// Move the uploaded file into a permanent location.
if (isset($file['name']['logo'])) {
// Make sure that the full file path is safe.
$filepath = JPath::clean($path. DS ."images". DS ."associations". DS . strtolower($file['name']['logo']));
// Move the uploaded file.
JFile::upload( $file['tmp_name']['logo'], $filepath );
$data['logo'] = strtolower( $file['name']['logo'] );
//convert image
$image = $filepath;
$im = new Imagick();
$im->pingImage($image);
$im->readImage( $image );
$im->setImageResolution(72,72);
$im->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
$im->scaleImage(160,0);
$im->setImageFormat('jpeg');
$im->setImageCompression(imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(60);
$im->modulateImage(100, 0, 100);
$im->writeImage($image);
$im->destroy();
}
$input->post->set('jform',$data);
return parent::save();
}
最后,我该如何处理?它将图像名称保存在数据库中,但一旦我返回到该项目,它就只有一个上载字段,在该字段中显示图像名称或实际图像,并显示删除功能和重新上载,这将非常有用
我走对了吗?。。。非常感谢您的帮助。。。谢谢:)如何制作2张图片
您必须从上传的原始文件中创建2个资源,对每个资源进行转换并保存在单独的文件中。例如,我正在使用这个包(注意没有可用的LimitColor过滤器)
管理图像
取决于原因、为什么要实现功能以及上传图像与其他对象/事件的关系
如果上载的图像用于用户配置文件,则应在数据库中存储用户id以及图像位置。下次检查当前用户是否有与其帐户和显示相关的图像
$image_one = new JImage($filepath);
$image_one
->filter('grayscale')
->toFile($path_one, IMAGETYPE_JPEG, array('quality' => 60));
$image_two = new JImage($filePath);
$image_two
->filter('limitcolors', array('limit' => 160))
->toFile($path_two, IMAGETYPE_GIF);