@xuda.io/ai_module 1.1.3613 → 1.1.3614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.mjs +27 -50
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -5834,67 +5834,44 @@ export const create_ai_agent_image = async function (req, job_id, headers) {
|
|
|
5834
5834
|
|
|
5835
5835
|
//////////////////
|
|
5836
5836
|
imageBase64 = Buffer.from(await images[0].image_blob.arrayBuffer()).toString('base64');
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
const {
|
|
5840
|
-
// const ai_avatar_response = await client.images.edit({
|
|
5841
|
-
// model: 'chatgpt-image-latest',
|
|
5842
|
-
// image: images[0].image_blob, // only one image allowed
|
|
5843
|
-
// prompt: `Generate a realistic fictional portrait wearing a hat. The portrait should be centered, head-and-shoulders only, on a transparent background. Place the provided logo on the hat, and ensure the subject is large enough to fill most of the frame. Use the supplied name, country, and context to guide the character’s appearance.
|
|
5844
|
-
// Context: ${JSON.stringify({ bio, business_name, country, mainCategory, subCategory })}`,
|
|
5845
|
-
// background: 'transparent',
|
|
5846
|
-
// });
|
|
5837
|
+
|
|
5838
|
+
const create_avatar_from_pic = async function () {
|
|
5839
|
+
const { first_name, last_name, bio, country, mainCategory, subCategory } = account_obj.account_info;
|
|
5847
5840
|
const ai_avatar_response = await client.images.edit({
|
|
5848
5841
|
model: 'chatgpt-image-latest',
|
|
5849
|
-
image: images[0].image_blob,
|
|
5850
|
-
prompt: `Create a transparent PNG profile image for a business account featuring building branded as ${business_name}.
|
|
5851
|
-
Display the attached logo clearly as prominent exterior signage.
|
|
5852
|
-
The building’s architecture and overall atmosphere should reflect the nature of the business, aligning with ${mainCategory} and ${subCategory}.
|
|
5853
|
-
Use the provided bio (${bio}) to understand the company’s focus and personality, and adapt the architectural style to match the ${country} country’s local design language. Select an appropriate building type for the specific business category, and present a contemporary,
|
|
5854
|
-
creative office environment with a strong, recognizable brand identity. The background should be fully removed, remove trees,clouds,sky or any landscape objects`,
|
|
5855
|
-
background: 'transparent',
|
|
5856
|
-
});
|
|
5857
|
-
imageBase64 = ai_avatar_response.data[0].b64_json;
|
|
5858
|
-
avatar_source = 'fictional';
|
|
5859
|
-
} else {
|
|
5860
|
-
const create_avatar_from_pic = async function () {
|
|
5861
|
-
const { first_name, last_name, bio, country, mainCategory, subCategory } = account_obj.account_info;
|
|
5862
|
-
const ai_avatar_response = await client.images.edit({
|
|
5863
|
-
model: 'chatgpt-image-latest',
|
|
5864
|
-
image: images[0].image_blob,
|
|
5842
|
+
image: images[0].image_blob,
|
|
5865
5843
|
|
|
5866
|
-
|
|
5844
|
+
prompt: `Completely remove the background, enhance and color-correct the subject, and return only a centered head-and-shoulders portrait facing the camera. Add extra top margin, include no labels or text, and export the result as a clean transparent PNG.
|
|
5867
5845
|
Ensure the subject is large enough to fill most of the frame. Use the supplied name, country, and context to guide the character’s appearance.
|
|
5868
5846
|
Context: ${JSON.stringify({ first_name, last_name, bio, country, mainCategory, subCategory })}`,
|
|
5869
|
-
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
5873
|
-
|
|
5874
|
-
|
|
5875
|
-
|
|
5847
|
+
background: 'transparent',
|
|
5848
|
+
});
|
|
5849
|
+
imageBase64 = ai_avatar_response.data[0].b64_json;
|
|
5850
|
+
avatar_source = 'ai profile';
|
|
5851
|
+
};
|
|
5852
|
+
const create_fictional_avatar = async function () {
|
|
5853
|
+
const { first_name, last_name, bio, country, mainCategory, subCategory } = account_obj.account_info;
|
|
5876
5854
|
|
|
5877
|
-
|
|
5855
|
+
const prompt = `analyze the the person info : ${JSON.stringify({ first_name, last_name, bio, country, mainCategory, subCategory })}
|
|
5878
5856
|
and create realistic fictional profile picture transparent background ,person in the center of the picture return only a centered head-and-shoulders portrait facing the camera. include no labels or text add top margin the person should cover the whole picture`;
|
|
5879
5857
|
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
|
|
5883
|
-
|
|
5884
|
-
|
|
5885
|
-
|
|
5886
|
-
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
} else {
|
|
5891
|
-
// create avatar from profile picture
|
|
5892
|
-
await create_avatar_from_pic();
|
|
5893
|
-
}
|
|
5858
|
+
imageBase64 = await create_image(prompt, undefined, undefined, 1);
|
|
5859
|
+
avatar_source = 'fictional';
|
|
5860
|
+
};
|
|
5861
|
+
// personal account
|
|
5862
|
+
const is_real_person_in_picture = await detect_real_person_in_image(imageBase64);
|
|
5863
|
+
if (is_real_person_in_picture) {
|
|
5864
|
+
if (images[0].is_transparent) {
|
|
5865
|
+
// keep the original
|
|
5866
|
+
imageBase64 = Buffer.from(await images[0].image_blob.arrayBuffer()).toString('base64');
|
|
5867
|
+
avatar_source = 'authentic profile';
|
|
5894
5868
|
} else {
|
|
5895
5869
|
// create avatar from profile picture
|
|
5896
|
-
await
|
|
5870
|
+
await create_avatar_from_pic();
|
|
5897
5871
|
}
|
|
5872
|
+
} else {
|
|
5873
|
+
// create avatar from profile picture
|
|
5874
|
+
await create_fictional_avatar();
|
|
5898
5875
|
}
|
|
5899
5876
|
|
|
5900
5877
|
console.log('Normalizing final avatar to 1024 with transparent padding...');
|