There are a number of approaches people have taken to accomplish such a task. One of my preferences is to use the Sitecore PowerShell Extensions (SPE) module. With some knowledge of PowerShell, you can just about do anything with the content.
Option 1 : Sitecore Item Web API
Use whatever method available to you, such as the Item Web API. With SPE or vanilla PowerShell you can consume the data, transform, and then import. SPE also includes a Web API but you completely customize what data is returned and how it's formatted.
Option 2 : SPE Import/Export Wizards
There is a Data Import Wizard bundled with SPE that would allow you to import updated content where the data is in CSV format.
One way to get started is by creating your own report and then using the export feature. You may find it helpful to reference media items using the GUID and export those separately. The book provides many examples on how to get started.
Reports have an export option at the top left.
Check out the #module-spe channel on the Sitecore Slack Chat to have more detailed discussions.
Write a custom script to return data in any format you like. This could include converting images to base64 and restructuring data into a new format designed to match the destination environment. Then write another script to import the data into the destination system.