按照你的要求编写的Java程序如下:( 要注意的地方见语句后面的注释)
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的罗江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class ImageWithArray { public static void main(String[] args) { // 读取图片到BufferedImage BufferedImage bf = readImage("c:\\tmp\\6\\female.png");//这里写你要读取的绝对路径+文件名 // 将图片转换为二维数组 int[][] rgbArray1 = convertImageToArray(bf); // 输出图片到指定文件 writeImageFromArray("c:\\tmp\\2.png", "png", rgbArray1);//这里写你要输出的绝对路径+文件名 System.out.println("图片输出完毕!"); } public static BufferedImage readImage(String imageFile){ File file = new File(imageFile); BufferedImage bf = null; try { bf = ImageIO.read(file); } catch (IOException e) { e.printStackTrace(); } return bf; } public static int[][] convertImageToArray(BufferedImage bf) { // 获取图片宽度和高度 int width = bf.getWidth(); int height = bf.getHeight(); // 将图片sRGB数据写入一维数组 int[] data = new int[width*height]; bf.getRGB(0, 0, width, height, data, 0, width); // 将一维数组转换为为二维数组 int[][] rgbArray = new int[height][width]; for(int i = 0; i height; i++) for(int j = 0; j width; j++) rgbArray[i][j] = data[i*width + j]; return rgbArray; } public static void writeImageFromArray(String imageFile, String type, int[][] rgbArray){ // 获取数组宽度和高度 int width = rgbArray[0].length; int height = rgbArray.length; // 将二维数组转换为一维数组 int[] data = new int[width*height]; for(int i = 0; i height; i++) for(int j = 0; j width; j++) data[i*width + j] = rgbArray[i][j]; // 将数据写入BufferedImage BufferedImage bf = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); bf.setRGB(0, 0, width, height, data, 0, width); // 输出图片 try { File file= new File(imageFile); ImageIO.write((RenderedImage)bf, type, file); } catch (IOException e) { e.printStackTrace(); } }}
运行结果:
图片输出完毕!
原图:
输出图:
先用php把数据库中的图片路径读取出来,然后把这个路径嵌入到img元素的src中,就相当于把图片的路径转化为图片了。
在php中,有文件上传,那么php服务器端可以接收到请求参数 $_FILES,在 $_FILES数组中读取到上传文件的form表单名,然后在读取的数组中可以获取上传文件的源文件,使用 fopen()函数就可以获取文件的字节流了。
具体来点代码看看吧:(假定上传文件的表单名为 “formname”)
if($_FILES isset($_FILES["formname"])){
//获取上传的文件的属性数组
$_fileinfo = $_FILES["formname"];
//获取上传文件的原文件名
$_filename = $_fileinfo["name"];
//获取上传文件的大小
$_filesize = $_fileinfo["size"];
//获取上传文件的临时文件名(长文件名)
$_filesource = $_fileinfo["tmp_name"];
//以读写方式打开文件,并将资源绑定到一个流上
$_filestream = fopen($_filesource,"ab");
//实现上传文件,其实质是把临时文件移动到制定的保存文件的位置
$_newfilename = "../mypath/filename.exp"; //自定义文件名,包含路径,可以是相对路径
move_uploaded_file($_filesource, $_newfilename);
}
前台:
form action="跳转页面" method="post" enctype="multipart/form-data"
input type="file" name="fname" /
input type="submit" value="Submit" /
/form
input[type=file] 表示:需要上传的文本或者图片
后台:
echo json_encode($_POST); // 输出json 字符串
输出的内容是上传到服务器的文件路径等相关信息
使用PHP对图片进行base64解码输出
?php
$img = 'test.jpg';
$base64_img = base64EncodeImage($img);
echo 'img src="' . $base64_img . '" /';
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
return $base64_image;
}
?