我的用户上传的图片大小为XX x YY。我想找到更大的尺寸并将图像缩小到250x250的正方形,并添加透明填充以弥补差异。有没有什么办法可以用CI的Image Lib完成这个任务?如何使用CodeIgniter填充图像?
2
A
回答
8
试试这个:
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['maintain_ratio'] = TRUE;
$config['width'] = 250;
$config['height'] = 250;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['maintain_ratio'] = FALSE;
$config['width'] = 250;
$config['height'] = 250;
$this->image_lib->initialize($config);
$this->image_lib->crop();
有关详细信息,从笨API
看到Image Manipulation Class虽然相当诚实,我不觉得CI的图像处理库是足够的。这是不是很灵活,它不是重复或组合动作(像上面的)速度非常快,它使用一个穷凶极恶的语法(可能派上用场的某些类型的应用程序,但我个人更喜欢像PHP Thumb ):
事实上,我最近整理了PHP拇指(download)使用CodeIgniter使用一个简单的包装库,和它的作品惊人。使用PHP拇指库,而不是CodeIgniter的自己,你可以把工作像这样做:在PHP Thumb's GitHub page
$this->load->library('phpthumb_lib');
$thumb = phpthumb_lib::create('/path/to/image/mypic.jpg');
$thumb->adaptiveResize(250, 250);
$thumb->save();
更多细节。
只有这并不垫透明像素(我会考虑一个不好的做法)的图像,它只是调整大小和裁剪图像,以适应整个250x250的像素面积不拉伸的图像。
或者,你可以把图像尺寸调整到适合里面一个250x250的像素盒(通过使用resize
而不是adaptiveResize
),然后将250x250px DIV容器里面的图片。我猜这可能是你想要的解决方案。
1
我不裁剪图像,而把它放在一个div的背景。这是我的代码。
1)里面的帮手的地方这一点。
function getSmallerDimension($img_path, $width, $height) {
list($wid, $hei, $type, $attr)= getimagesize($img_path);
$ratio = $wid/$hei;
if($height < $width/$ratio) {
return 'width';
}
else if($width < $height * $ratio) {
return 'height';
}
else {
return 'auto';
}
}
2)使用它来调整大小。
$config['image_library'] = 'gd2';
$config['source_image'] = 'source-path/source.jpg';
$config['create_thumb'] = true;
$config['thumb_marker'] = '-thumb';
$config['maintain_ratio'] = true;
$config['width'] = 250;
$config['height'] = 250;
$config['master_dim'] = getSmallerDimension('source-path/source.jpg', 250, 250);
$this->load->library('image_lib', $config);
$this->image_lib->resize();
相关问题
- 1. 如何填充SVG图像
- 2. 如何使图像填充JLabel BorderLayout.CENTER
- 3. 如何使用图像作为使用opencv填充图案
- 4. 如何用图像填充单元格
- 5. 如何用图像填充页面?
- 6. 填充图像
- 7. 如何使用图像填充OpenLayers中的图层?
- 8. 用css填充图像
- 9. 用图像填充页面
- 10. 用processing.js填充图像
- 11. IE7图像填充
- 12. JavaFX图像填充
- 13. 填充的图像
- 14. 如何让父div的图像填充填充?
- 15. 使用资源图像填充数组
- 16. 使用LINQ to SQL来填充图像
- 17. 填充在wxpython中使用的图像
- 18. 使用Floodfill填充ASCII图像
- 19. 使用图像的矩形填充
- 20. 使用图像填充多个ImageViews
- 21. 使用PINRemoteImage填充CollectionViewCell图像
- 22. 使图像区域的无用填充
- 23. XFillPolygon:Transpent使用像素图填充输出?
- 24. UIImage填充肖像图像
- 25. HorizontalListView如何填充图像数组?
- 26. 如何在C++中“填充”图像
- 27. 如何让按钮图像填充它?
- 28. Codeigniter:使用jquery填充表格
- 29. 如何使用ggplot填充geom_area()图?
- 30. 如何使用图像和文本填充xaml组合框