标签: imagecreatefrompng

使用PHP创建透明的png文件

目前我想创建一个质量最低的透明png.

代码:

<?php
function createImg ($src, $dst, $width, $height, $quality) {
    $newImage = imagecreatetruecolor($width,$height);
    $source = imagecreatefrompng($src); //imagecreatefrompng() returns an image identifier representing the image obtained from the given filename.
    imagecopyresampled($newImage,$source,0,0,0,0,$width,$height,$width,$height);
    imagepng($newImage,$dst,$quality);      //imagepng() creates a PNG file from the given image. 
    return $dst;
}

createImg ('test.png','test.png','1920','1080','1');
?>
Run Code Online (Sandbox Code Playgroud)

但是,有一些问题:

  1. 在创建任何新文件之前,我是否需要特定一个png文件?或者我可以创建没有任何现有的png文件?

    警告:imagecreatefrompng(test.png):无法打开流:没有这样的文件或目录

    第4行的C:\ DSPadmin\DEV\ajax_optipng1.5\create.php

  2. 虽然有错误信息,但它仍然会生成一个png文件,但是,我发现该文件是一个黑色的图像,我是否需要具体的任何参数才能使其透明?

谢谢.

php png image imagecreatefrompng

13
推荐指数
2
解决办法
4万
查看次数

尝试从给定的PNG图像中提取像素值

试图了解PNG格式.

考虑这个PNG图像:

在此输入图像描述

图像取自这里

在十六进制编辑器中,它看起来像这样:

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00 80 00 00 00 44 08 02 00 00 00 
C6 25 AA 3E 00 00 00 C2 49 44 41 54 78 5E ED D4 81 06 C3 30 14 40 D1 B7 34 DD FF FF 6F 
B3 74 56 EA 89 12 6C 28 73 E2 AA 34 49 03 87 D6 FE …
Run Code Online (Sandbox Code Playgroud)

png opencv image image-processing imagecreatefrompng

11
推荐指数
1
解决办法
1万
查看次数

我可以使用URL作为imagecreatefromjpeg()的源而不启用fopen包装器吗?

我知道可以使用imagecreatefromjpeg(),imagecreatefrompng()等将URL作为'filename'和fopen(),但由于安全问题,我无法启用包装器.有没有办法将URL传递给imagecreatefromX()而不启用它们?

我也尝试过使用cURL,这也给我带来了问题:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complete URL to image
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

$image = imagecreatefromstring($data);
var_dump($image);

imagepng($image);
imagedestroy($image);
Run Code Online (Sandbox Code Playgroud)

php url image-resizing imagecreatefrompng

10
推荐指数
1
解决办法
1万
查看次数

PHP imagecopy与透明背景

我使用此代码从另一个png图像创建图像,默认情况下背景为黑色.我的问题是如何设置透明背景?

$input = imagecreatefrompng('image.png');
$output = imagecreatetruecolor(50, 50);

imagecopy($output, $input, 4,0, 8,8, 8,8);
imagecopy... etc.

header('Content-Type: image/png');
imagepng($output);
Run Code Online (Sandbox Code Playgroud)

这样做有简单的方法吗?谢谢

php png imagecreatefrompng

7
推荐指数
3
解决办法
3万
查看次数

imagecreatefrompng错误 - 如何检测和处理?

在我的脚本中,我有以下几行:

$test = @imagecreatefrompng($name);
if ($test) { ... }
Run Code Online (Sandbox Code Playgroud)

我确信它$name代表磁盘上的现有文件,但我必须处理该文件不是有效PNG文件的情况(由于传输错误或恶意用户).我希望通过不做任何事情来处理这些案件.

但是,鉴于上面的代码,我的PHP解释器在第一行停止,并显示以下错误消息:

imagecreatefrompng()[function.imagecreatefrompng]:'foobar.png'不是有效的PNG文件

不应该@已经抑制了此错误消息,并且false如文档中所述返回了函数吗?我怎么能告诉PHP我知道可能发生错误而不中断执行?

php error-handling gd imagecreatefrompng

3
推荐指数
1
解决办法
8159
查看次数

在php中使用GD函数imagecreatefrom*时,如何防止出现"不是有效的图像文件"错误?

我正在使用imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg函数和上传的图像,有时在图像损坏时会出现错误(例如警告:imagecreatefromgif():...不是有效的GIF文件).我阅读了很多关于这个主题的帖子,找不到"有效"的答案.

我确实尝试了以下一些来验证图像(如其他帖子所示),但它们都不适用于所有情况.如果图像没有标题信息,则以下工作,但如果图像具有标题/ mime类型信息并且已损坏,则它不起作用.

if( imagecreatefromjpeg($uploaded_image) !== false ) {
    // image is okay.
}
Run Code Online (Sandbox Code Playgroud)

要么

try {
    $test = imagecreatefrompng($uploaded_image);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
Run Code Online (Sandbox Code Playgroud)

要么

使用getimagesize($ uploaded_image); //如果图像无效,将返回false或错误.

这些情况都不适用于具有头信息/ mime类型信息的损坏的图像文件.

我想防止出现这些错误,如果可能的话,检测图像是否没有损坏,并且可以使用任何imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg函数.如果损坏,我想显示错误消息而不是运行功能.我正在寻找PHP的解决方案.

感谢您的帮助和建议.

php gd image imagecreatefrompng

2
推荐指数
1
解决办法
6511
查看次数

使用 PHP imagecreatefromstring 时如何捕获无效图像

我正在使用 imagecreatefromstring 并当前验证正确的图像文件格式。

所以一个链接:

swqkdwfibqwfwf
Run Code Online (Sandbox Code Playgroud)

不起作用,因为它不是有效的文件类型。但我刚刚发现了这一点:

sibdlsibiwbifw.png
Run Code Online (Sandbox Code Playgroud)

将在我的验证中没有错误地发送。对于不返回图像的图像链接,我收到此错误:

Warning: file_get_contents(etwteet.png): failed to open stream: No such file or directory in /var/www/clients/client2/web3/web/process/addnewbuild.php on line 141

Warning: imagecreatefromstring(): Empty string or invalid image in /var/www/clients/client2/web3/web/process/addnewbuild.php on line 141

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in /var/www/clients/client2/web3/web/process/addnewbuild.php on line 143
Run Code Online (Sandbox Code Playgroud)

有没有办法可以捕获此错误,以便我可以停止代码处理并通知用户?

用于获取 URL 的代码:

$imagefile = image url;
$resource = imagecreatefromstring(file_get_contents($imagefile));
Run Code Online (Sandbox Code Playgroud)

谢谢。克雷格.

php imagecreatefrompng

2
推荐指数
1
解决办法
6182
查看次数

如果"imagecreatefrompng()"失败,如何创建PNG缩略图?

我开始使用此功能创建PNG缩略图:

$image = imagecreatefrompng("http://imagenic.net/images/pfujz9j5juav1qrex00.png");
Run Code Online (Sandbox Code Playgroud)

但是,它说:

'http://imagenic.net/images/pfujz9j5juav1qrex00.png' is not a valid PNG file
Run Code Online (Sandbox Code Playgroud)

它适用于其他PNG图像,所以我想这个特定图片有问题.

在这种情况下我该怎么办?

有没有其他方法来创建缩略图?

(顺便说一句,我在网上发现了这张照片.)

php png thumbnails imagecreatefrompng

1
推荐指数
1
解决办法
1927
查看次数

PHP imagecreate()PNG来自任何常用的文件格式?

我目前有一个图像上传输入,只接受PNG,JPG/JPEG,GIF图像.如果文件有效,则会继续使用图像创建缩略图

imagecreatefrompng()
imagecopy()
imagejpg()
Run Code Online (Sandbox Code Playgroud)

这很好,但显然只适用于png图像.

除了使用提交的正确文件格式之外,使用"imagecreatefrompng()"的最合理和最有效的方法是什么?我能想到的是if/else使用多个"imagecreatefrom_ _()"但这似乎不对.

另外,无论提交的是什么,我的输出格式如何总是PNG,而不是我现在拥有的当前imagejpg().

php forms image imagecreatefrompng

1
推荐指数
2
解决办法
4536
查看次数

使用php上传透明背景的png图像并保持背景透明

我有一个php页面,它接收用户图像并将其上传到我的网络服务器.

我刚刚注意到,如果我有一个透明背景的png,并上传它,背景将变为白色.

例如,我在具有透明背景的photoshop中创建新图像,然后在页面中添加彩色圆圈.我通过ftp将图像保存为png和uplod到服务器,然后图像在网页上显示为圆形,因为背景是透明的.

如果我使用带文件输入框的php上传图像,图像将变为白色.

我曾尝试使用imagealphablending,imagecolorallocatealpha,imagefill和imagesavealpha来保留透明背景,但它只是将bg更改为黑色.

任何线索?

继承我的PHP代码

        <?php
    $path = "../userfiles/orig/";
    $userpath="../".$_REQUEST['userpath']."/";

    function getExtension($str) {
        $i = strrpos($str,".");
        if (!$i) { return ""; } 
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }

    $valid_formats = array("jpg", "png", "gif", "bmp","jpeg","PNG","JPG","JPEG","GIF","BMP");

    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
        $name = $_FILES['photoimg']['name'];
        $size = $_FILES['photoimg']['size'];

        if(strlen($name)){
                 $ext = getExtension($name);

                if(in_array($ext,$valid_formats)){

                    if($size<(2048*2048)){
                        $time1=time();
                        $actual_image_name =$time1."_".str_replace(" ", "_", $name);
                        $tmp = $_FILES['photoimg']['tmp_name'];

                        if(move_uploaded_file($tmp, $path.$actual_image_name)){                                     
                                     $image=$actual_image_name;                     
                                     /*--------resize image-----------*/
                                     $size = 320; // the imageheight
                                     $filedir = …
Run Code Online (Sandbox Code Playgroud)

php transparency gd image-processing imagecreatefrompng

0
推荐指数
1
解决办法
5527
查看次数