Skip to content
This repository has been archived by the owner on Jun 12, 2024. It is now read-only.

Commit

Permalink
doc: update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
dsdanielpark authored Mar 10, 2024
1 parent dc227a7 commit 9050a0c
Showing 1 changed file with 36 additions and 25 deletions.
61 changes: 36 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ print(response.text)

### # 04. Image generation
Returns images generated by Gemini.
> [!NOTE]
> Use GeminiImage for image processing. `web_images` works without cookies, but for images like `generated_image` from Gemini, pass cookies. Cookies are needed to download images from Google's storage. Check the response or use existing cookies variable.
*Sync*
```python
Expand All @@ -151,30 +153,39 @@ from gemini import Gemini, GeminiImage
response = GeminiClient.generate_content("Create illustrations of Seoul, South Korea.")
generated_images = response.generated_images # Check generated images [Dict]

GeminiImage.save_sync(generated_images, save_path="cached")
GeminiImage.save_sync(generated_images, save_path="save_dir", cookies=cookies)

# You can use byte type image dict for printing images as follow:
bytes_images_dict = GeminiImage.fetch_images_dict_sync(generated_images, cookies) # Get bytes images dict
from IPython.display import display, Image
import io
# bytes_images_dict = GeminiImage.fetch_images_dict_sync(generated_images, cookies=cookies) # Get bytes images dict
# GeminiImage.save_images_sync(bytes_images_dict, path="save_dir", cookies=cookies) # Save to path
```

<details><summary>Display images in IPython</summary>

```python
bytes_images_dict = GeminiImage.fetch_images_dict_sync(generated_images, cookies) # Get bytes images dict
from IPython.display import display, Image
import io

for image_name, image_bytes in bytes_images_dict.items():
print(image_name)
image = Image(data=image_bytes)
display(image)
```

</details>

for image_name, image_bytes in bytes_images_dict.items():
print(image_name)
image = Image(data=image_bytes)
display(image)

# GeminiImage.save_images_sync(bytes_images_dict, path="cached") # Save to path
```
*Async*

```python
response = GeminiClient.generate_content("Create illustrations of Seoul, South Korea.")

generated_images = response.generated_images # Check generated images [Dict]

await GeminiImage.save(generated_images, "cached")
# image_data_dict = await GeminiImage.fetch_images_dict(generated_images)
# await GeminiImage.save_images(image_data_dict, "cached")
await GeminiImage.save(generated_images, "save_dir", cookies=cookies)
# image_data_dict = await GeminiImage.fetch_images_dict(generated_images, cookies=cookies)
# await GeminiImage.save_images(image_data_dict, "save_dir")
```

<details><summary>Async wrapper</summary>
Expand All @@ -183,11 +194,11 @@ await GeminiImage.save(generated_images, "cached")
import asyncio
from gemini import Gemini, GeminiImage
async def fetch_and_save_images_async(prompt: str, save_path: str="cached"):
async def fetch_and_save_images_async(prompt: str, save_path: str="save_dir", cookies=cookies):
response = await GeminiClient.generate_content_async(prompt)
generated_images = response.generated_images # Check response images [Dict]
await GeminiImage.save(generated_images, save_path=save_path)
await GeminiImage.save(generated_images, save_path=save_path, cookies=cookies)
# Run the async function
if __name__ == "__main__":
Expand All @@ -201,11 +212,11 @@ if __name__ == "__main__":
import asyncio
from gemini import Gemini, GeminiImage
async def fetch_and_save_images_async(prompt: str, save_path: str="cached"):
async def fetch_and_save_images_async(prompt: str, save_path: str="save_dir", cookies):
response = await GeminiClient.generate_content_async(prompt)
generated_images = response.generated_images # Check response images [Dict]
image_data_dict = await GeminiImage.fetch_images_dict(generated_images) # Get bytes images dict asynchronously
image_data_dict = await GeminiImage.fetch_images_dict(generated_images, cookies=cookies) # Get bytes images dict asynchronously
await GeminiImage.save_images(image_data_dict, save_path=save_path) # Save to path asynchronously
# Run the async function
Expand All @@ -229,21 +240,21 @@ from gemini import Gemini, GeminiImage
response = GeminiClient.generate_content("Please recommend a travel itinerary for Seoul.")
response_images = response.web_images # Check response images [Dict]

GeminiImage.save_sync(response_images, save_path="cached")
GeminiImage.save_sync(response_images, save_path="save_dir")

# You can use byte type image dict as follow:
# bytes_images_dict = GeminiImage.fetch_bytes_sync(response_images, cookies) # Get bytes images dict
# GeminiImage.save_images_sync(bytes_images_dict, path="cached") # Save to path
# GeminiImage.save_images_sync(bytes_images_dict, path="save_dir") # Save to path
```
*Async*
```python
response = GeminiClient.generate_content("Create illustrations of Seoul, South Korea.")

response_images = response.web_images # Check generated images [Dict]

await GeminiImage.save(response_images, "cached")
await GeminiImage.save(response_images, "save_dir")
# image_data_dict = await GeminiImage.fetch_images_dict(response_images)
# await GeminiImage.save_images(image_data_dict, "cached")
# await GeminiImage.save_images(image_data_dict, "save_dir")
```

<details><summary>Async wrapper</summary>
Expand All @@ -252,11 +263,11 @@ await GeminiImage.save(response_images, "cached")
import asyncio
from gemini import Gemini, GeminiImage
async def fetch_and_save_images_async(prompt: str, save_path: str="cached"):
async def fetch_and_save_images_async(prompt: str, save_path: str="save_dirs", cookies=cookies):
response = await GeminiClient.generate_content_async(prompt)
response_images = response.web_images # Check response images [Dict]
await GeminiImage.save(response_images, save_path=save_path)
await GeminiImage.save(response_images, save_path=save_path, cookies=cookies)
# Run the async function
if __name__ == "__main__":
Expand All @@ -270,11 +281,11 @@ if __name__ == "__main__":
import asyncio
from gemini import Gemini, GeminiImage
async def fetch_and_save_images_async(prompt: str, save_path: str="cached"):
async def fetch_and_save_images_async(prompt: str, save_path: str="save_dir", cookies=cookies):
response = await GeminiClient.generate_content_async(prompt)
response_images = response.web_images # Check response images [Dict]
image_data_dict = await GeminiImage.fetch_images_dict(response_images) # Get bytes images dict asynchronously
image_data_dict = await GeminiImage.fetch_images_dict(response_images, cookies=cookies) # Get bytes images dict asynchronously
await GeminiImage.save_images(image_data_dict, save_path=save_path) # Save to path asynchronously
# Run the async function
Expand Down

0 comments on commit 9050a0c

Please sign in to comment.