请问我用php的 生成式图像卡通化,sdk已经接入了,提示图片链接非法,请检查图片链接是否可访问 - imageUrl is invalid url.,能提供一下文件在本地或文件不在同一地域OSS, 生成式图像卡通化的代码吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云视觉智能开放平台提供图像卡通化功能,可直接使用API实现。同时,也支持从本地上传文件到OSS,并从OSS下载文件进行卡通化处理。
以下是生成式图像卡通化的代码示例:
import requests
# 1. 先获取 Access Token
url_token = 'https://dtplus-cn-shanghai.data.aliyuncs.com/imagecn/aifaceaccess_token'
headers_token = {"Authorization": "APPCODE <yourAppCode>"}
response_token = requests.get(url_token, headers=headers_token)
# 从 response_token 中获取 Access Token
access_token = response_token.json().get('access_token')
# 2. 图像卡通化
url_cartoon = "https://dtplus-cn-shanghai.data.aliyuncs.com/imagecn/cartoon"
headers_cartoon = {"Authorization": "Bearer " + access_token}
# 图片文件在本地
# files = {'image_file': open('/path/to/your/image.jpg', 'rb')}
# 图片文件在OSS
bucket_name = 'your-bucket-name'
object_name = 'your-object-name'
oss_endpoint = 'oss-cn-hangzhou.aliyuncs.com'
oss_url = 'http://' + bucket_name + '.' + oss_endpoint + '/' + object_name
files = {'image_url': (None, oss_url)}
response_cartoon = requests.post(url_cartoon, files=files, headers=headers_cartoon)
# 3. 保存卡通化后的图片
if response_cartoon.status_code == 200:
img_data = response_cartoon.content
with open('/path/to/your/cartoon_image.jpg', 'wb') as handler:
handler.write(img_data)
其中,需要替换 、/path/to/your/image.jpg、your-bucket-name 和 your-object-name 为您具体的参数。
<?php
//安装依赖
//最低SDK版本要求:imageenhan-20190930的SDK版本需大于等于1.0.11。
//可以在此仓库地址中引用最新版本SDK:https://packagist.org/packages/alibabacloud/imageenhan-20190930
//composer require alibabacloud/imageenhan-20190930
use AlibabaCloud\SDK\Imageenhan\V20190930\Imageenhan;
use \Exception;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Imageenhan\V20190930\Models\GenerateCartoonizedImageAdvanceRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use GuzzleHttp\Psr7\Stream;
class GenerateCartoonizedImageAdvance {
/**
* 使用AK&SK初始化账号Client
* @param string $accessKeyId
* @param string $accessKeySecret
* @return Imageenhan Client
*/
public static function createClient($accessKeyId, $accessKeySecret){
$config = new Config([
// 必填,您的 AccessKey ID
"accessKeyId" => $accessKeyId,
// 必填,您的 AccessKey Secret
"accessKeySecret" => $accessKeySecret
]);
// 访问的域名
$config->endpoint = "imageenhan.cn-shanghai.aliyuncs.com";
return new Imageenhan($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
// "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET" 的生成请参考https://help.aliyun.com/document_detail/175144.html
// 如果您是用的子账号AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
$client = self::createClient("YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
// 场景一,使用本地文件
//$file = fopen('/tmp/GenerateCartoonizedImage.jpg', 'rb');
//$stream = new Stream($file);
// 场景二,使用任意可访问的url
$file = fopen('https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/imageenhan/GenerateCartoonizedImage/1025.jpg', 'rb');
$stream = new Stream($file);
$generateCartoonizedImageAdvanceRequest = new GenerateCartoonizedImageAdvanceRequest([
"imageUrlObject" => $stream,
"imageType" => "girl",
"index" => "0"
]);
$runtime = new RuntimeOptions([]);
try {
$resp = $client->generateCartoonizedImageAdvance($generateCartoonizedImageAdvanceRequest, $runtime);
# 获取整体结果
echo Utils::toJSONString($resp->body);
} catch (Exception $exception) {
# 获取整体报错信息
echo Utils::toJSONString($exception);
# 获取单个字段
echo $exception->getCode();
}
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
GenerateCartoonizedImageAdvance::main(array_slice($argv, 1));
可以看下最佳实践中提供的文件在本地或文件不在同一地域OSS的实例代码 https://help.aliyun.com/document_detail/602271.html