작성
·
14
0
import io
from pyspark.sql.functions import pandas_udf, col
from pyspark.sql.types import BinaryType
IMAGE_SIZE = 256
@pandas_udf(BinaryType())
def resize_image_udf(df_series):
def resize_image(path):
"""resize image and serialise back as jpeg"""
image_path = path.replace("dbfs:", "")
image = Image.open(image_path)
width, height = image.size
image = image.crop(((width-IMAGE_SIZE)/2, (height-IMAGE_SIZE)/2, (width+IMAGE_SIZE)/2, (height+IMAGE_SIZE)/2))
image = image.resize((IMAGE_SIZE,IMAGE_SIZE), Image.NEAREST)
output = io.BytesIO()
image.save(output, format='JPEG')
return output.getvalue()
return df_series.apply(resize_image)
image_meta = {
"spark.contentAnnotation": '{"mimeType":"image/jpeg"}'
}
df = (
file_info_df.withColumn("image", resize_image_udf("path"))
.withColumn('image', col('image').alias('image', metadata=image_meta))
)
display(df)
안녕하세요 이미지 바이너리칼럼에
메타 정보를 추가했음에도 불구하고 display 한값이 아래처럼 바이너리 상태로 보이는데
왜그런지 알수 있을까요?
databricks 무료버전 + jpg파일 databricks내에 카탈로그 볼륨에 저장해서 사용한게 다르긴 하지만 그거때문에 그러진 않을 것 같고
spark 4.0.0 사용하고 있습니다 ㅠ
답변