py-googletranslation
py-googletranslation copied to clipboard
Please support image translate
@Saravananslb , Thank you because of your amazing work. Google translate can translate image to new image and also return text in it, please add this feature.
@Saravananslb , I found this code , good starter idea to develop it :
Everything looks right , but i don't know why not working.
import json
import requests
import base64
import os
def guess_type(image_path):
# Get the file extension from the image path
ext = os.path.splitext(image_path)[1].lower()
# Map the extensions to the mimetypes
mimetypes = {
".jpg": "image/jpeg",
".jpeg": "image/jpeg",
".png": "image/png"
}
# Return the mimetype if it exists, otherwise return None
return mimetypes.get(ext, None)
def load_image_as_base64(image_path):
with open(image_path, 'rb') as f:
image_bytes = f.read()
# Convert image bytes to base64 string
base64_string = base64.b64encode(image_bytes).decode('utf-8')
mimetype = guess_type(image_path)
# Return image data in the specified format
return [base64_string, mimetype]
_imageObj = load_image_as_base64('124+958.png')
_RPCIDS = "WqWDPb"
params = {
'rpcids': _RPCIDS,
'bl': 'boq_translate-webserver_20240115.08_p0',
'soc-app': 1,
'soc-platform': 1,
'soc-device': 1,
'rt': 'c'
}
data = {'f.req': json.dumps([[
[_RPCIDS,
json.dumps([_imageObj,"auto","fr"], separators=(',', ':')),
None,
"generic"]
]], separators=(',', ':')),
}
TRANSLATEURL = 'https://translate.google.com/_/TranslateWebserverUi/data/batchexecute'
response = requests.request("POST", TRANSLATEURL,
data=data,
params=params,
)
then i use bellow code to get translated image :
import base64
def convert_base64_to_image(base64_string, image_path):
# Convert base64 string to image bytes
image_bytes = base64.b64decode(base64_string)
# Write the image bytes to a file
with open(image_path, 'wb') as image_file:
image_file.write(image_bytes)
b = response.text.split('\n')
li_filter = []
flag = False
for _b in b:
if _b.isnumeric():
flag = not flag
_b = '==='
if flag:
li_filter.append(_b)
li_data = json.loads(li_filter[1])
resp_img_data =json.loads(li_data[0][2])
res_img_data=resp_img_data[0]
f_mimetypes = {
"image/jpg": ".jpg" ,
"image/jpeg" :".jpeg",
"image/png" : ".png"
}
convert_base64_to_image(res_img_data[0], 'out'+f_mimetypes[res_img_data[1]])