Я пытаюсь преобразовать любое изображение, загружаемое пользователем, в формат jpg с белым фоном. Однако я заметил, что когда пользователь загружает изображение PNG, которое содержит прозрачность, ColdFusion разрушает все изображение. Похоже, что происходит цифровая коррупция.
Таким образом, пользователь сначала предоставляет URL-адрес, по которому находится изображение, и cfhttp
используется для его чтения:
<cfhttp url="http://pathtoimage/image.png" method="get" useragent="#CGI.http_user_agent#" getasbinary="yes" result="PageResult">
<cfimage name="UserImg" source="#PageResult.FileContent#" />
Итак, теперь UserImg
- это изображение, которое пользователь хочет загрузить. Затем мы делаем обычную установку сглаживания, и я также хочу, чтобы фон был белым, потому что изображение может иметь прозрачный фон:
<cfset ImageSetAntialiasing(UserImg, "on")>
<cfset ImageSetBackgroundColor(UserImg, "white")>
Последний этап - записать его на сервер как файл jpg:
<cfimage source="#UserImg#" action="write" destination="pathtoimages/userimage.jpg" overwrite="yes" format="jpg" />
Проблема в том, что PNG-изображения с прозрачностью полностью испорчены. То, что должно иметь белый фон и быть четким изображением в формате jpg, в конечном итоге оказывается блочным с черным фоном. Вот пример:
Как мне обойти это?