Due to lockdown and quarantine in numerous countries, this year's AP tests were moved to an online platform created by College Board, the creator of the AP program and other tests such as the SAT.
In most online AP tests this year, students were given 1-2 questions on the exam web app, and were given the option to submit either a photo of their work, a supported text file (ex: .txt, .docx), or copy and paste written text.
Millions of students in the United States and other countries took Advanced Placement tests online this year, and many of those students had problems submitting their exams on the site.
I myself am a high school student and took the AP Computer Science A test this year with the new online system, and had no issues. But I know of several students who experienced issues submitting their exams, and are taking a makeup test in June.
One particular problem that many students experienced was from submitting photos taken from their phone. iPhones with iOS 11 (released September 2017) or later store pictures with the newer .HEIC file extension by default, rather than the more popular .jpg or .png formats. .HEIC is a filename extension for HEIF, or High Efficiency Image File Format, which was released by MPEG, the same group which invented the .MP3 format among others.
I ran a detailed test of 500 of photos, comparing the size of each photo as a .HEIC and a .JPG, with equivalent quality. .HEIC photos were more than 50% smaller than their equivalent .JPGs. Given this, in my view, it's clear why Apple would make the decision to format photos as .HEICs by default. Many iPhone users (especially high school students) take and store hundreds of photos on their phone, and using this new format saves storage space and possibly even the cost of purchasing a phone with higher storage capacity.
College Board's online AP exams did not accept students submitting photos encoded with the .HEIC format. In response to the issue, College Board released a section on their Tips to Avoid Problems on Exam Day page with instructions to set the default photo format to be .JPG.
or continue reading here on DEV.
This lack of developer adoption of .HEICs in this case caused problems with user experience. Many students were unable to submit their exams, forcing them to take makeups, and according to Forbes, a lawsuit has been filed against College Board because of some of the technical issues, demanding $500 million USD.
While the problems arising from not supporting .HEICs may not be as serious in most other sites, users who experience issues may feel annoyed and confused about why they might not be able to upload images from their iPhone.
In fact, I myself recently encountered a problem where GitHub would not display .HEIC photos on their site (example), and I was forced to download them and view them on my computer's photo viewer locally. And this lack of developer adoption is all despite the widespread use of .HEIC on iPhones and the 50% size reduction in .HEICs in comparison to other formats.
In converting .HEIC encoded photos to other formats, there are a few options, some of which I have listed below:
- HEIC2ANY — JS library to convert .HEIC encoded photos to JPG, PNG, or GIF on the client side (npm // site)
- heic-convert — Converts .HEIC encoded photos to JPG or PNG on the server side in Node.js (npm)
There are also some command line tools like
imagemagick (also available as an npm package) which can process .HEIC files to other formats.
imagemagick can also be used to convert popular photo formats like JPG and PNG to .HEIC, which can be helpful when trying to save storage space.
That's all for this post. I hope you found this interesting and consider adding support for .HEIC files on any sites you have which get photo(s) from the user.
Thanks for scrolling.
This post is originally from my blog, where I, as a teenage developer, write about web development and just about anything programming.
— Gabriel Romualdo, May 24, 2020
Note: I formerly wrote under my pseudonym, Fred Adams.