2017-06-04 11 views
1

原图: Original image 这里我需要什么: Here what i need 应该从这个小瓦创建: It should be created from this small tile如何在不使用exec函数的情况下制作平铺的图像帧?

很多人建议使用ImageMagick的解决方案(使用PHP exec函数吧) - http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=21867

convert frame_template.gif \ 
-tile blackthin_top.gif -draw 'color 1,0 floodfill' -rotate 90 \ 
-tile blackthin_btm.gif -draw 'color 1,0 floodfill' -rotate 90 \ 
-tile blackthin_top.gif -draw 'color 1,0 floodfill' -rotate 90 \ 
-tile blackthin_btm.gif -draw 'color 1,0 floodfill' -rotate 90 \ 
-gravity center thumbnail.gif -composite frame_filled.gif 

PICFrame溶液(使用PHP exec函数它) - http://www.fmwconcepts.com/imagemagick/picframe/index.php

picframe [-f frameid] [-m mattesize] [-c mattecolor] [-b bordersize] [-s shade] [-a adjust] [-o opacity ] [-d distance] infile outfile 

PHP imagick具有创建彩色边框与伟大的能力:

$imagick = new \Imagick('image.jpg'); 
$imagick->scaleImage(300, 300, false); 

// Create frame placeholder 
$imagick->frameimage('red','30','30', 30, 0); 

// Flood fill with color 
$imagick->floodFillPaintImage('green', 10, '#6e0000',0, 0,false 
); 

header("Content-Type: image/jpg"); 
echo $imagick->getImageBlob(); 

但是PHP imagick不能使用自己的图像平铺创建框架,只有纯色。这是非常相关的问题 - How to flood fill the frame with a pattern image using imagick php class?

另一个很好的解决方案 - https://stackoverflow.com/a/28778953/2337706,但它创建大的PNG帧的图像,你应该知道正确的图像大小。

我知道,我可以用PHP GD创建 - http://php.net/manual/en/ref.image.php,但我不知道如何实现它这样正确的方法。

+0

什么是错的使用PHP的exec()调整颜色的厚度?这使得它可以很容易地使用预先存在的解决方案,而不必去创造它一遍 – fmw42

+0

@ fmw42是的,你是对的,它很容易使用,方便易,但使用了很多客户的共享主机不提供访问到PHP exec()或者我不是? – kostya572

+0

我对Imagick并没有太多的尝试,并没有尝试过,但是http://us3.php.net/manual/en/imagick.textureimage.php是将平铺图像的函数。你应该能够使用它来实现你想要的结果。 – fmw42

回答

0

在ImageMagick的,你可能只是做一些简单的像这样:

convert a1Wit.jpg -mattecolor black -frame 10x10+3+3 -gravity west -chop 3x0 -bordercolor gold -border 3 frame_result.jpg 

enter image description here

这些命令应该是很容易转化为Imagick。见http://us3.php.net/manual/en/imagick.frameimage.phphttp://us3.php.net/manual/en/imagick.chopimage.phphttp://us3.php.net/manual/en/imagick.borderimage.php

或者干脆:

convert a1Wit.jpg -bordercolor black -border 7 -bordercolor "gray(35%)" -border 3 -bordercolor "#D0A456" -border 3 frame_result2.jpg 

enter image description here

或者

convert a1Wit.jpg -mattecolor "gray(30%)" -frame 13x13+5+5 -gravity northwest -shave 5x5 -bordercolor "#D0A456" -border 3 frame_result3.jpg 

enter image description here

或者

convert a1Wit.jpg -mattecolor "gray(30%)" -frame 13x13+5+5 -gravity northwest -bordercolor "#D0A456" -border 3 frame_result4.jpg 

enter image description here

根据需要

相关问题