我一直在尝试找到一种实现这一目标的方法,现在没有运气. 不幸的是,这些格式都没有由ImageMagick 支持 谢谢 解决方案 自定义代码以适合您的要求. 我已经连接了一个从文本文件中生成的示例图像,该图像包含"为txt文件生成预览image for txt files"句子:
以下是关于 image-processing 的编程技术问答
我使用 intervention/image/image 库(使用GD)用于我的Laravel 4.1项目以调整一些大小图像(JPG和PNG).在开发服务器上,一切都很好,但是在生产中,缩略图的质量非常差. 我认为这是一个GD问题,但这是安装的版本,它们看起来与我相似: 开发:OSX Mavericks,PHP 5.4.19 GD支持:启用 GD版本:捆绑(2.1.0兼容) freetype支持:启用 freetype链接:与freetype freetype版本:2.4.10 t1lib支持:启用 GIF阅读支持:启用 GIF创建支持:启用 JPEG支持:启用 libjpeg版本:8 PNG支持:启用 libpng版本:1.6.2 WBMP支持:启用 XBM支持:启用 产品:Ubuntu 12.04,PHP 5.4.25 GD支持:启用 GD版本:2.0.36 freetype支持:启用 freetype链接:与freety
我目前正在从命令行运行的PHP应用程序,以优化图像的文件夹. PHP应用程序更像是其他图像优化器的包装器,它简单地迭代目录并抓住所有图像,然后通过适当的程序运行图像以获得最佳结果. 以下是我将使用的程序,每个程序都将用于... imagemagick确定文件类型并将转换为非动画gif to png gifsicle要优化动画gif 图像 jpegtran优化 JPG 图像 pngcrush要优化 png 图像 pngquant要优化 png 图像png8格式 pngout要优化 png 图像png8格式 我的问题:有了1-10张图像,一切都会顺利且相当快,但是,一旦我在具有10张或更多图像的较大文件夹上运行,它就会变得非常慢.我并没有真正看到一个很好的解决方案,但是有助于避免重新处理图像的一件事.因此,如果我有一个带有100张图像的文件夹,并且我优化了该文件夹,然后添加5个新图像,请重新运行优化器.然后,它必须优化105张图像,我的目标是仅优化5个较新的
我正在尝试使用ImageMagick的getImageChannelStatistics函数来计算图像的平均亮度.然后,如果达到给定的阈值,我将使用modulateImage降低亮度. array Imagick::getImageChannelStatistics ( void ) 第一个问题: 每个通道的返回平均值大于255,尽管颜色深度为8. 如何解释这些值? array([平均] => 27510.293108724 [minima] => 0 [maxima] => 65535 [standardDeviation] => 23761.909802897 [depth] => 8) array([平均] => 22654.046931424 [minima] => 0 [maxima] => 65535 [standardDeviation] => 21085.3099916751 [depth] [depth] => 8) array([平均] =
我有一个PHP脚本,如果图像中的不同颜色的数量小于或等于256. 在我的测试案例中,我有一个包含79种颜色的图像.在没有抖动的情况下运行ImagetueColortopalette和设置为79的$ ncolors参数之后,我的图像中只有15种颜色.将其转换为调色板后,我什至尝试在其上运行ImageColormatch,但我仍然只得到15种颜色. 在PHP中使用GD,如何在不丢失所有这些颜色的情况下将真实的图像转换为调色板图像? 解决方案 ,我可以通过使用ImageCreate创建调色板图像,然后将真实的颜色图像复制到该图像,从而将真实的颜色图像转换为调色板图像.这会产生比ImageTrueColorToPalette. 更好的结果 为什么ImageTrueColorToPalette给我一个看上去很糟糕的图像,我不确定,但这似乎是一个足够的解决方法. $palette = ImageCreate($width, $height); ImageCopy($pa
我需要在图像上找到一个预定义的区域,并将其替换为另一个图像(仅嵌入后者).预定义的斑点将是一个可变尺寸的矩形区域,充满了先前商定的颜色的固体背景. 关于如何实现这一目标的任何建议? 我想我可以通过循环进行循环并逐行浏览图像,像素乘像素,但我觉得这不是最有效的解决方案,从而找到指定颜色的第一个像素.由于该位置应该很大,因此我还考虑过遍历图片(请参阅下面的附件). 所以我需要帮助来定义这些循环.我相信我将必须使用一些数学功能. 例如,如果大图是正方形的,则对角循环(黄色 ef 线)将使用简化的线性函数y=x(y=1x+0),但是它不太可能真的是正方形.因此,我将不得不使用扩展的完整线性函数y=kx+b,其中k将与矩形大小有关(我认为k=height/width),而b将只有0.喜欢: $k = 1080/1920; for ( $x=1920; $x>0; $x-- ) { $y = $k*$x; } 但这是黄色的,我猜是最简单的.现在,如何定义其他
我在PHP中有一个用户配置文件,我想为用户提供更改其个人资料图片的选择.但是当他们通过$ _ post提交新图片时,我希望将图片调整到: 高度:110px |宽度:与高度有关(如果宽度大于高度) 宽度:110px |高度:与宽度相关(如果高度大于宽度) 完成调整大小后,我想裁剪图片,因此它变为110px x 110px,但我希望它以中心为中心. 例如,如果用户上载具有110px宽度和200px高度(调整大小后的尺寸)的图片,则新图像将在右边的90px上裁剪110x110.我想要的是从左侧裁剪45px,从右边裁剪了另外45%,因此它将以中心为中心 该功能将接受.png,.gif和.jpg图像,并且无论初始格式是什么. 我搜索了很多以创建这样的功能,我找到了一个答案,但是每当我竭尽全力更改一些细节时,一切都停止正常工作. 到目前为止我的代码:
我有一个图像,我的图像中有部分行.它们都是时间水平或垂直线.我不知道该线的颜色,也不知道线的宽度. 如何使用PHP检测到这样的线? 正如您在上传的图像中看到的那样,我需要切成3x3个部分.我需要3个垂直和3个水平段来切片零件.请注意,在内容区域周围有一个矩形,这是图像的一部分. 我们可以使用这些标记来获取坐标. 解决方案 ,如果它们具有相同的颜色/长度,则最好通过比较每行的第一个和最后一个像素来使用标记.这种方式将比在每行上解析所有像素更有效. 其他解决方案 您必须检查图像行和列的图像.您很可能会使用 imagecolorat() .在所有列和行上循环.如果两个(或任何任意限制)或更多像素具有相同(或非常接近)的颜色,则它们构成一条线. 其他解决方案 绝对使用标记,否则这是一个难题. 要使用标记,您只需要找到它们的位置即可.为此,从边缘开始,进行连续的单像素宽条,并寻找周期性偏差.经典且相当简单的方法是使用自相关.由于您的标记是如此清晰(即
使用php IE中的GD库创建图像时imagecreatetruecolor() imagecreatetruecolor()结果图像的DPI是什么?我找不到指定可以在何处设置DPI或默认设置的人. 我需要创建300DPI TIFF或JPEG,然后从程序中保存到文件系统中. 如果使用GD库不可能,还有另一个适合这种情况吗? 感谢您的帮助 编辑:是的,这是在创建图像 - 我想从脚本中保存一个300DPI文件,而不必打开Photoshop中的每个文件来指定DPI. 解决方案 我认为没有一种使用GD设置DPI的方法.图像的DPI在图像数据的领先字节中指定 - 我相信对于15-18字节的JPEG图像.字节15-16是水平DPI,垂直17-18.值存储为八分之一. 我对字节级编辑有些棘手,但是您可以将图像大小调整到目标像素大小,然后编辑文件以调整DPI. . 其他解决方案 我相信它总是72DPI.因此,您应该会乘以像素尺寸以产生所需的分辨率图像.
我试图将图像放在另一个图像(水印)上,例如: class Water_mark extends CI_Controller { function __construct() { parent::__construct(); } function index() { $this->load->library('image_lib'); $config['image_library'] = 'GD2'; $config['source_image'] = '/assets/images/tv-share.jpg'; $config['new_image'] = '/assets/images/tv-share-done.jpg'; $config['wm_type'] = 'overlay'; $config['wm_overlay_path'] =
尝试使用libgd在PHP中调整图像大小之前,我想检查是否有足够的内存可以进行操作,因为"不含内存"完全杀死了PHP进程并无法捕获. 我的想法是,我需要在原始图像和新图像中为每个像素(rgba)的每个像素(rgba)的内存4字节: // check available memory if(!is_mem_available(($from_w * $from_h * 4) + ($to_w * $to_h * 4))){ return false; } 测试表明,这比图书馆似乎真正使用的要多得多.谁能提出更好的方法? 解决方案 您应该检查此评论 ,and 其他解决方案 我想象必须通过分析imagecopyresampled的源代码来找出GD的峰值内存使用量,但这可能很难版本,通常不可靠. 根据您的情况,想到了一种不同的方法:调整图像大小时,请在同一服务器上调用另一个PHP脚本,但使用http: $file = urlencode("/path/t
关于如何执行命令行的答案 convert /path/to/file/file.pdf[3] output.jpg 太好了...但是,如果我在内存处理中使用,我将使用PDFLIB生成PDF,然后将其缓冲区输出到我想要生成所选页面预览JPG预览的函数.如何?我的代码: [...] $buf = $pdf->get_buffer(); //$buff is just a PDF stored in a string now. $im = new Imagick(); $im->readimageblob($buf); $im->setImageFormat("jpg"); $im->setimagecompressionquality(60); $len = strlen($im); header("Content-type: image/jpeg"); header("Content-L
我在服务器上有JPG.我使用 imagecreatefromjpeg($imgPath); 打开它.我想通过将黑条添加到顶部+底部或左+右侧,使其成为16x9图像. (思考background-size: contain; background-position: center;)这就是我所拥有的: $img_info = getimagesize($imgPath); 我知道我需要使用ImageCreateTrueColor制作空白映像,imagecopyresampled创建图像,imagejpeg保存它.但是我不知道如何将它们放在一起.谢谢! 解决方案 这将有能力: $im=imagecreatefromjpeg ($imgPath); $width=ImageSX($im); $height=ImageSY($im); $ratio=16/9; $width_out=$width; $height_out=$height; if ($height
我需要一种为图像管理脚本生成缩略图(使用PHP5)的方法,并且在我的主机安装了多个版本的PHP(4和5)的问题上,PHP4设置为默认值.这意味着来自CLI的任何呼叫PHP都将运行PHP4.我想出了以下内容,这是我希望成为跨平台解决方案.我主要在这里发布它,因为我很难使用Google找到任何帮助,因此这可能在将来对某人有所帮助,我也有以下问题. 您是否看到有什么明显错误? 您知道或知道具有优化数组的PHP5二元的其他途径吗? 如果主机具有exec或shell_exec禁用,egalleryProcessqueue.php脚本是否可以作为独立的cron作业运行?我无法访问Cron来对此进行测试.我不太担心这个问题,因为无论如何我都会开始测试它. 有人对某种方式有任何建议,我可以得到有关处理图像多远的反馈?请参阅egalleryProcessqueue.php的托多部分,当它在管理员部分中时,我想显示一个进度栏. 主脚本 /** * Writes the array
我目前正在制作一个脚本,该脚本在移动应用程序上显示网站上的缩略图,并且"视网膜显示"有问题.如果原始图像足够大,我会显示一个带有所需尺寸的双倍的缩略图,如果不是,则显示其所需尺寸.现在,我的功能检查是否可以按比例地调整大小,如果不能进行调整,则将其调整到"最小宽度"或"最小值高"并从中心裁剪. 这是一个问题:如果它检测到该图像在大小的双重尺寸上显示出"缩放"裁剪大小,直到达到原始大小的极限,我找不到方法正确缩放它. (我的主要问题是我并不是很擅长数学:P). 更简单的讲座: 这是图像的原始大小: 600 x 301 这是所需/裁剪的大小: 320 x 180 这是我想获得的大小: 535 x 301 .我从Photoshop获得了它,这是扩展320x180的结果,直到找到原始大小的极限为止. ps:我知道GD,所以我只需要计算大小的公式即可. 解决方案 相同的算法也可以扩展.这是未经测试的代码,它仅旨在缩小规模,但是如果您删除"缩放量表"测试,则可能会
我正在研究这个项目,我想将3张图像结合到一个. 到目前为止的工作是使每个图像(JPG)透明. 但是将它们合并到新的PNG图像中后,透明度消失了. 这是代码: function CreateMyCoolOutfitBaby () { $Outfitwidth = 250; $Outfitheight = 350; $newoutfit = imagecreatetruecolor($Outfitwidth, $Outfitheight); // create empty new image $dress = imagecreatefromstring(file_get_contents("http://images180.affili.net/001089/c/bb9c33888aae07d839b6724e31f462bc.jpg")); imagealphablending($dress, true); $whit