解决方案 »

  1.   

    第一步压缩图片:/**
     * 压缩图片
     * 
     * @param bitmap
     *            源图片
     * @param width
     *            想要的宽度
     * @param height
     *            想要的高度
     * @param isAdjust
     *            是否自动调整尺寸, true图片就不会拉伸,false严格按照你的尺寸压缩
     * @return Bitmap
     */
    public Bitmap reduce(Bitmap bitmap, int width, int height, boolean isAdjust) {
    if (null == bitmap) {
    return null;
    }
    if (bitmap.getWidth() < width && bitmap.getHeight() < height && isAdjust) {
    return bitmap;
    }
    float sx = new BigDecimal(width).divide(new BigDecimal(bitmap.getWidth()), 4, BigDecimal.ROUND_DOWN)
    .floatValue();
    float sy = new BigDecimal(height).divide(new BigDecimal(bitmap.getHeight()), 4, BigDecimal.ROUND_DOWN)
    .floatValue();
    if (isAdjust) {
    sx = (sx < sy ? sx : sy);
    sy = sx;
    }
    Matrix matrix = new Matrix();
    matrix.postScale(sx, sy);
    return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    }
    第二步,把Bitmap转成InputStream  public InputStream  bitmap2IS(Bitmap bm){  
            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);  
                InputStream sbs = new ByteArrayInputStream(baos.toByteArray());    
                return sbs;  
            }
    第三步,把InputStream  上传到服务器pc端/**
     * 上传文件到服务器
     * 
     * @param url
     *            上传路径
     * 
     * @param input
     *            文件流
     * @return String
     * @throws Exception
     */
    public String upload(String url, InputStream input) throws Exception {
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setChunkedStreamingMode(1024 * 1024);
    conn.setRequestMethod(Constant.REQUEST_POST);
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("Charsert", HTTP.UTF_8);
    conn.setRequestProperty("Content-Type", "multipart/form-data;file=img.png");
    OutputStream output = conn.getOutputStream();
    int i = 0, total = 0;
    byte[] buffer = new byte[1024];
    while ((i = input.read(buffer)) != -1) {
    output.write(buffer, 0, i);
    }
    String response = readFile(conn.getInputStream(), HTTP.UTF_8, 1, false);
    input.close();
    output.flush();
    output.close();
    conn.disconnect();
    return response;
    }
      

  2.   

    还少一个方法,读取服务器返回的结果/**
     * 读取输入流中的文本
     * 
     * @param input
     *            输入流
     * @param encoding
     *            编码格式(默认为UTF-8)
     * @param beginLine
     *            从第几行开始读(默认从第1行开始)
     * @param isLine
     *            读完一行是否写入换行符
     * @return String
     * @throws Exception
     */
    public String readFile(InputStream input, String encoding, int beginLine, boolean isLine) throws Exception {
    String result = "";
    beginLine = (beginLine <= 0 ? 1 : beginLine);
    encoding = (ToolUtil.get().isBlank(encoding) ? HTTP.UTF_8 : encoding);
    InputStreamReader read = new InputStreamReader(input, encoding);
    BufferedReader reader = new BufferedReader(read);
    String line;
    int i = 1;
    while ((line = reader.readLine()) != null) {
    if (i >= beginLine) {
    result += line + (isLine ? "\n" : "");
    }
    i++;
    }
    reader.close();
    read.close();
    input.close();
    return result;
    }