Feed on
Posts
Comments
Email訂閱

This Post is under 軟體開發

續前文使用 PHP 呼叫 Google Gemini API 生成圖像,本文將繼續展示用Google Gemini API 「編輯」圖像,也就是給一張圖片,要Gemini來修改圖像或轉換圖像的風格,也就是最近很紅的讓AI以吉卜力風格生成圖像在做的事情。不過經過嘗試之後,目前Gemini API 使用 Gemini 2.0 Flash Experimental 在轉換圖片風格不盡理想,圖片內容會被大幅修改,品質也沒有很精緻;而不像ChatGPT風格轉換後圖片內容與品質都還維持一定水準。至於 Imagen 3 必須付費才能使用,不知效果如何。

本次主要參考文件:使用 Gemini 編輯圖片。關鍵點在將要修改的圖像傳入給Gemini的參數。做法是先將圖片檔內容讀進來,以base64編碼,放到輸入參數的 inlineData。所以只要稍微修改前文使用 PHP 呼叫 Google Gemini API 生成圖像的程式碼(粗體即為此次新增程式碼),將要轉換的圖檔網址傳入(即imgUrl參數),如下:

<?php

$model = isset($_REQUEST['m']) ? $_REQUEST['m'] : "gemini-2.0-flash-exp-image-generation";
$geminiQuery = isset($_REQUEST['q']) ? $_REQUEST['q'] : "請將提供的圖片轉成吉卜力(Studio Ghibli)風格的圖片";
$imgUrl = isset($_REQUEST['imgUrl']) ? $_REQUEST['imgUrl'] : "";
$api_key = "YOUR_GEMINI_KEY";

$url = "https://generativelanguage.googleapis.com/v1beta/models/{$model}:generateContent?key={$api_key}";

$data = array(
    "contents" => array(
        array(
            "parts" => array(
                array(
                    "text" => $geminiQuery
                )
            )
        )
    )
);

if(!empty($imgUrl)) {
    $data["contents"][0]["parts"][] = array(
            "inlineData" => array(
                "mimeType" => image_type_to_mime_type(exif_imagetype($imgUrl)),
                "data" => base64_encode(file_get_contents($imgUrl))
            )
        );
}

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);

curl_close($ch);

if (curl_errno($ch)) {

    die("{ 'error': '" . curl_error($ch) . "'}");
}

$imageData = json_decode($response, true);

foreach ($imageData["candidates"][0]["content"]["parts"] as $part) {
    if(isset($part["inlineData"])) {        
        header("Content-type: {$part["inlineData"]["mimeType"]}");
        print(base64_decode($part["inlineData"]["data"]));
        exit;
    }
}

 
原圖

在前文使用 PHP 呼叫 Google Gemini API 生成圖像,被Gemini取代的是(畫師、設計師…)。在本文「使用 PHP 呼叫 Google Gemini API 編輯圖像」被Gemini取代的是軟體(影像處理軟體、繪圖軟體…),譬如在本文中可以改下一些影像處理的指令「將圖像變亮」(不過如果要它產生histogram,它會回答辦不到)、「在圖像右下角放一張椅子」。

如此聰明的你可以想想還有「什麼」會被AI取代?批次作業?複雜的流程?對AI下正確指令的AI顧問(改問AI怎麼用AI產生吉卜力風格的圖像)?如果萬事萬物都可以被AI取代,人活著的目的是什麼?(就連這個問題其實也可以問AI)我可以想像得到的是,大概就像退休之後無所事事(或專注於興趣)的生活吧;也或者像古希臘人的生活,因為有奴隸幫忙,所以古希臘自由人得以追求身體與心靈的自由。

往好的方面想,原本需要專業助手(寫手、畫師、理財專家、法律顧問…)的工作或創意,在AI的幫助下,素人也可以來進行,譬如產出繪本、動漫。所以在AI時代,或許具有源源不絕創意的人會在最後勝出吧。

 

 

留言區