以下PHP代码段使用GD将浏览器上传的PNG大小调整为128x128.它的效果很好,除了原始图像中的透明区域在我的情况下被替换为纯黑色.
虽然imagesavealpha
已经确定,但事情并不完全正确.
保留重采样图像透明度的最佳方法是什么?
$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType )
= getimagesize( $uploadTempFile );
$srcImage = imagecreatefrompng( $uploadTempFile );
imagesavealpha( $targetImage, true );
$targetImage = imagecreatetruecolor( 128, 128 );
imagecopyresampled( $targetImage, $srcImage,
0, 0,
0, 0,
128, 128,
$uploadWidth, $uploadHeight );
imagepng( $targetImage, 'out.png', 9 );
Run Code Online (Sandbox Code Playgroud) 我正在放弃GD来操纵我的网站中的图像 - 这太糟糕了.
每个人都说要使用ImageMagick因为它们比GD好,但ImageMagick和Gmagick(瑞士军刀图像处理)怎么样?
Zend在这里有一篇很漂亮的文章http://devzone.zend.com/article/10531谈论它们.
在我离开ImageMagick之前,是否有使用gmagick的动机?
(PHP 5.3+)
编辑:问两个库之间哪个更好有什么问题?我认为这是一个公平的问题.如果有人可以解释一个lib优于另一个的好处,那将有助于我和其他人阅读这个问题.为什么要关闭这样的问题?
编辑2:每个人都在问我需要做什么:我认为这是不经意的:用户上传图像(可能是png/gif/bmp w/e)我需要转换为JPG,然后将其存储在数据库中,最终如果它们是太大我需要调整一下它们.
谢谢
在PHP中调整大图像大小的最有效方法是什么?
我目前正在使用GD功能imagecopyresampled来拍摄高分辨率图像,并将它们干净地调整到适合网页查看的大小(大约700像素宽,700像素高).
这适用于小(2 MB以下)的照片,整个调整大小操作在服务器上只需不到一秒钟.但是,该网站最终将为可能上传最大10 MB图像的摄影师提供服务(或者图像尺寸最大为5000x4000像素).
使用大图像执行此类调整大小操作往往会大幅增加内存使用量(较大的图像会使脚本的内存使用量超过80 MB).有没有办法让这个调整大小操作更有效率?我应该使用像ImageMagick这样的替代图像库吗?
现在,调整大小代码看起来像这样
function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality) {
// Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
// and places it at endfile (path/to/thumb.jpg).
// Load image and get image size.
$img = imagecreatefromjpeg($sourcefile);
$width = imagesx( $img );
$height = imagesy( $img );
if ($width > $height) {
$newwidth = $thumbwidth;
$divisor = $width / $thumbwidth;
$newheight = floor( $height / $divisor);
} else {
$newheight …
Run Code Online (Sandbox Code Playgroud) 我搜索过这个问题,过去问题中提供的解决方案对我来说完全不可理解.每当我运行这样的函数时imagecreatefromjpeg
,我得到这个:
致命错误:调用未定义的函数imagecreatefromjpeg()...
我正在开发一个新的PHP安装; 我的上次安装从未遇到过这个问题.我不知道发生了什么.
下面的代码可以很好地裁剪图像,这就是我想要的,但对于较大的图像,它也可以工作.有没有办法'缩小图像'
理想的是,我可以在裁剪之前让每张图像的大小大致相同,这样每次都能获得好的效果
代码是
<?php
$image = $_GET['src']; // the image to crop
$dest_image = 'images/cropped_whatever.jpg'; // make sure the directory is writeable
$img = imagecreatetruecolor('200','150');
$org_img = imagecreatefromjpeg($image);
$ims = getimagesize($image);
imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150);
imagejpeg($img,$dest_image,90);
imagedestroy($img);
echo '<img src="'.$dest_image.'" ><p>';
Run Code Online (Sandbox Code Playgroud) 最近新的php7已经发布.但是,当我尝试安装gd包时,找不到该库.
我试过了
sudo apt-get install php70-gd
Run Code Online (Sandbox Code Playgroud)
和
sudo apt-get install php70-php-gd
Run Code Online (Sandbox Code Playgroud)
有没有人知道gd是否适用于php 7?
这些似乎都做同样的事情.每个人的利弊是什么?
imagecopyresized()vs imagecopyresampled()vs imagecopy().
我正在调整用户提交的图像的大小.
所以我有一个用'$ newImage = imagecreatetruecolor(250,250)'创建的图像shell.
现在我想将原始图像复制到'$ newImage'
当我在"配置命令"中输入phpinfo()时,如何启用(或者我需要安装)GD; --without-gd?
我的phpinfo()输出"Core"中也没有任何内容列出"gd"
AWS上的PHP V5.2.4.
我目前遇到一些使用GD调整图像大小的问题.
一切正常,直到我想调整动画gif的大小,在黑色背景上提供第一帧.
我尝试过使用getimagesize
但只给了我维度,没有什么可以区分任何gif和动画.
GIF动画不需要实际调整大小,只要能够跳过它们就足够了.
有线索吗?
PS.我无法访问imagemagick.
亲切的问候,
短剑的一种
gd ×10
php ×10
image ×3
alpha ×1
amazon-ec2 ×1
cakephp ×1
centos ×1
copy ×1
crop ×1
imagemagick ×1
jpeg ×1
linux ×1
png ×1
transparency ×1