Merge pull request #649 from huiandjie/community-contributions-branch

Added my contributions to community-contributions
This commit is contained in:
Ed Donner
2025-09-08 22:18:30 +01:00
committed by GitHub
4 changed files with 210 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
# Enhanced Profile Picture
Create a stylish profile picture by extracting all the companies you worked for and all the clients you serviced from your profile, and add these company/client logos to your profile picture after applying some Ghibili style.
## Contents
- `profile_with_company_logos.ipynb`: The notebook file with all code and explanations.
- `my_profile.pdf`: Your profile in pdf format. (Please relace this file with your own profile)
- `my_picture.jpg`: Your profile picture. (Please replace this with your own picture)
- `ai_profile_picture.png`: The AI generated picture.
## How to Run
1. Add the GOOGLE_API_KEY.
2. Run the jupyter notebook.
### Author
Hui Wang

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -0,0 +1,189 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"from dotenv import load_dotenv\n",
"from IPython.display import Markdown, display, update_display\n",
"from google import genai\n",
"from google.genai import types\n",
"from PIL import Image\n",
"from io import BytesIO\n",
"import base64\n",
"from PyPDF2 import PdfReader"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"id": "Jd_mMczWPcf-"
},
"outputs": [],
"source": [
"# prompt: get gemini api key and create a client connection to gemini\n",
"\n",
"# imports\n",
"\n",
"load_dotenv(override=True)\n",
"google_api_key = os.getenv('GOOGLE_API_KEY')\n",
"\n",
"google = genai.Client(api_key=google_api_key)\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "STKn3tGIVxOA"
},
"outputs": [],
"source": [
"def modifyImage(image, prompt):\n",
" response = google.models.generate_content(\n",
" model=\"gemini-2.0-flash-preview-image-generation\",\n",
" contents=[prompt, image],\n",
" config=types.GenerateContentConfig(\n",
" response_modalities=['TEXT', 'IMAGE'],\n",
" temperature=0.1\n",
" )\n",
" )\n",
"\n",
" for part in response.candidates[0].content.parts:\n",
" if part.text is not None:\n",
" print(part.text)\n",
" elif part.inline_data is not None:\n",
" image = Image.open(BytesIO(part.inline_data.data))\n",
" #image.show()\n",
" return image"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "06h-zRWtWL2J",
"outputId": "e12b3b9a-4586-4cac-b3b9-1b5d6f27f708"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"I will transform the photograph into a vibrant Ghibli-style illustration. The scene will depict a man in a blue striped shirt and light blue shorts standing on a balcony with a glass railing. Behind him, the iconic Hollywood sign will be visible on a sun-drenched, grassy hillside under a clear blue sky, rendered with the characteristic soft lines and lush colors of Studio Ghibli animation.\n",
"\n",
"\n"
]
}
],
"source": [
"styled_image = modifyImage(Image.open('my_picture.jpg'), 'convert the attached images to a Ghibli art work.')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"id": "mR8MoSimZ14L"
},
"outputs": [],
"source": [
"def read_pdf(file_name):\n",
" file = open(file_name, \"rb\")\n",
" bin = file.read()\n",
" reader = PdfReader(BytesIO(bin))\n",
"\n",
" text = \"\"\n",
" for page in reader.pages:\n",
" text += page.extract_text()\n",
" return text\n",
" \n",
"def find_companies(text):\n",
" response = google.models.generate_content(\n",
" model=\"gemini-2.0-flash\",\n",
" config=types.GenerateContentConfig(\n",
" system_instruction=\"You are a career assistant.\"),\n",
" contents=('From the following text, please identity the company names I worked at or served as client. Please only return the company names, with each company name on a new line, no other text: \\n' + text)\n",
" )\n",
" return response.candidates[0].content.parts[0].text"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"id": "uZopM8pObBIB"
},
"outputs": [],
"source": [
"pdf_text = read_pdf('my_profile.pdf')\n",
"company_response = find_companies(pdf_text)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kKoneJrjegUu",
"outputId": "96f601f5-dec5-424f-b8ad-34c019091395"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"I will add the specified company logos as subtle elements in the background of the image, ensuring each logo appears only once and does not distract from the main subject.\n",
"\n",
"\n"
]
}
],
"source": [
"final_image = modifyImage(styled_image, 'Please add the following company logos to the background, make sure only add each logo once:\\n' + company_response)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"final_image.save('ai_profile_picture.png')"
]
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"display_name": "llms",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}